1

VS 2012 と既存のデータベース (SQL 2012) があります。

データベースには 1 対 1 の関係があり、一部の列は " " のようなデフォルト値で null 非許容です。EDM は edmx ダイアグラムを生成しましたが、すべての関係は 1 対多です。

null 不可の列を持つCustomerテーブルがあり、そのデフォルト値は " " です。エンティティ クラス Customer を生成した後、.edmx デザイナーでこのプロパティを削除してから、プロジェクトをコンパイルします。AddressReference1

デフォルト値が " " の null 非許容プロパティの 1 つをデザイナーから削除すると、プロジェクトをコンパイルしたときに次のようなエラーが生成されました。

エラー 1 エラー 3023: 568 行目から始まるフラグメントのマッピングに問題があります: テーブル Customer の Customer.AddressReference1 列をマップする必要があります: デフォルト値がなく、null 値を許容できません。C:\Users\cliu\Documents\Visual Studio 2012\Projects\FulfillmentService\ShipmentModel.edmx 569 15 FulfillmentService

エンティティ クラスからいくつかのプロパティを削除したい場合、この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

モデルからいくつかのプロパティを削除したい場合は、データベースでそれらを削除する必要があります。そうしないと、EF 規則は正しく機能しません。

通常、モデルとそのマッピングを完全に制御したい場合は、Code-First アプローチを使用する必要があります。

Database-First アプローチは、抽象化のために開発者にいくつかの制限を課す EF 規則 (規則) に大きく依存しています。

db-first アプローチを code-first に変更し、OnModelCreatingイベントをオーバーライドすることでこれらの規則の一部を削除することは可能ですが、これにより奇妙な問題が発生し、それらを修正するためだけに二重の作業が必要になります...!

現在の状況では、1 対多の関係を受け入れ、モデルとデータベースの同期を維持するしかありません。

于 2013-07-30T13:41:33.297 に答える