データベースのテーブルに新しい列を追加しました。テーブルは既存のEntity Frameworkモデルで既に定義されています。これを行う方法については、ほとんどの項目をここで確認しましたが、それでも失敗します。
少し背景がありますが、このエンティティモデルは少なくとも3年間更新されていません。そのため、私が追加している列とは別に、その間に追加されたが含まれていない列が他にもたくさんあることを知っています。私は約9か月前にプロジェクトを引き継ぎましたが、モデルを正常に更新することはできませんでした。
最初の試行:
結果:
2回目の試行
結果
回目の試行
結果
4回目の試行
結果
最終試行
結果
私が重要なポイントにあり、モデルを更新しなければならないので、提供できるヘルプまたは方向は大歓迎です。
「データベースからモデルを更新する」は、使用するのが難しく/遅く、エラーを起こしやすいです。あなたがおそらく欲しくない/必要としない他のものを生成します。そのため、必要な列を手動で追加するとうまく機能します。モデル/テーブルの数によっては、VSでファイルを開くのが非常に遅くなる可能性があるため、VSエディターの外部で行うことをお勧めします。
1. So in Windows Exlorer,right click on the *.edmx file and open with Notepad (or Notepad++/Textpad).
2. Search for the text <EntityType Name="YourTableNameToAddColumn">.
3. Add the property <Property Name="YourNewColumnName" Type="varchar" MaxLength="64" />
4. Search for the text <MappingFragment StoreEntitySet="YourTableNameToAddColumn">
5. Add mapping to the new column <ScalarProperty Name="YourNewColumnName" ColumnName="YourNewColumnName"/>
6. Save the *.edmx file
上記のalltejによる回答の補遺、および「このMSLの一部として指定された概念側のメンバーまたはプロパティ 'xxxxx'がMetadataWorkspaceに存在しない」というChris Walshの回答への回答。
.edmxファイル内の[〜#〜] two [〜#〜]場所で「プロパティを追加」を検索することを確認する必要があります。そうしないと、Chrisのエラーが発生します。
問題を見つけました。モデルを生成したときに、エラー113:多重度はロールでは無効です。作成が失敗したときに生成された他の16307エラーの中で気づかなかった。すべてが正常に動作することを修正したら。
ありがとう
1.Windows Exlorerで、*。edmxファイルを右クリックして、メモ帳(またはNotepad ++/Textpad)で開きます。
2.テキスト<EntityType Name="YourTableNameToAddColumn">
を検索します。
3.プロパティ<Property Name="YourNewColumnName" Type="varchar" MaxLength="64" />
を追加します。
4.もう一度テキストを検索します<EntityType Name="YourTableNameToAddColumn">
、2つ目があります。
5.プロパティ<Property Name="YourNewColumnName" Type="varchar" MaxLength="64" />
を追加します。
6.テキスト<MappingFragment StoreEntitySet="YourTableNameToAddColumn">
を検索します。
7.新しい列<ScalarProperty Name="YourNewColumnName" ColumnName="YourNewColumnName"/>
にマッピングを追加します。
8. * .edmxファイルを保存します
9.その後、テーブルのedmxモデルを更新しますpublic string YourNewColumnName { get; set; }
テーブルにいくつかの列を追加し、edmxファイルが正常に更新される状況にあったときに、この質問を見つけました。ただし、コード生成が適切にトリガーされなかったため、.csファイルは更新されませんでした。 Entities.ttファイルを右クリックし、テキスト変換を実行する「カスタムツールの実行」を選択して修正しました。
警告:データベースを削除できない場合は、次の手順を実行しないでください!
Visual Code(.net 2)を使用しています。ここに私がそれを解決した方法があります:
まず、データベースを削除します。
dotnet ef database drop
次に、すべての移行を削除します。
dotnet ef migrations remove
移行が削除されるまで、同じコマンドを実行しますall!
最初の移行を追加します。
dotnet ef migrations add InitialCreate
上記のコマンドを実行した後、生成された新しいファイル、おそらくData/Migrationsファイルで変更を行ってください:timestamp + InitialCreate設計ファイルではありません。
画像の例: 新しい列の追加
列を追加し、すべてが一貫したものになったら、プロジェクトを保存して次のコマンドを実行します。
dotnet ef database update
すべて問題なければ、新しい列が作成されます。