2016-06-01 7 views
1

ナゲットの最新のエンティティフレームワークを使用していますが、DBの変更時にエンティティマッピングが正しく動作しません。私がやっている手続き:エンティティモデルフレームワークが正しく更新されない

  1. 同期エンティティモデルをDBテーブルにコードで設定します。
  2. テーブルの一部のフィールドのデータ型を変更します。
  3. DBのエンティティモデルを更新します。
  4. 新しいデータ型は更新されません。

DBの変更がエンティティモデルに反映されていない場合、まだ動作していないシナリオがいくつかあります。私はいくつかの記事を読んで、これらが既に既知の問題かもしれないことを認識しています。しかし、これらの問題を解決する共通のソリューションはありますか?今は、エンティティモデルのソースコードのデータ型を手動で変更する必要があります。エンティティの同期をより正確にするのに役立つ設定変更がいくつかありますか?

+0

「NULL」のようなものを「NOT NULL」に変更すると同じことが起こります。 –

+0

エンティティはどんな種類の継承にも従っていますか? – RBT

+0

私のエンティティには継承はありません。それは既存のDBから作成されますが、私はFK関係の構成を見ています。 –

答えて

0

私はVisual Studioが確かに更新された列のデータ型の不一致を検出できることがわかりました。これは、以下のように「エラーリスト」ウィンドウで次のエラーが表示されている理由です。私は自分のデータベースにEmployee表にnchar(10)Intから給与列のデータ型を変更:

Error 2019: Member Mapping specified is not valid. The type 'Edm.Int32[Nullable=False,DefaultValue=]' of member 'Salary' in type 'DbFirstTpccModel.Employee' is not compatible with 'SqlServer.nchar[Nullable=False,DefaultValue=,MaxLength=10,Unicode=True,FixedLength=True]' of member 'Salary' in type 'DbFirstTpccModel.Store.Employee'. 

だから、データ型は、それを変更検知し、それを通して更新モデルウィザードを使用してこの問題を解決するために、単純にそれぞれを削除することをお勧めしますエンティティをモデルデザイナから取得し、更新モデルウィザードを使用してテーブルを再追加します。

+0

私のエンティティモデルはこのようには動作しません。私はテーブルフィールドのデータ型の変更後に "データベースからモデルを更新..."メニューを使用しましたが、変更は検出されませんでした。モデルでそのフィールドを削除してモデルを更新すると、新しい名前のエンティティに接尾辞付きの新しいフィールドが作成されます。 –

関連する問題