web-dev-qa-db-ja.com

Entity Frameworkを使用してデータベースからモデルの1つのテーブルのみを更新するにはどうすればよいですか?

Entity Frameworkを使用してdbから生成されたモデルがあります。データベースに変更がある場合は、データベースからモデルを更新して、モデルの変更を取得します。ただし、この更新はモデルに含まれるすべてのエンティティ(テーブル)に適用されます。

次に、テーブルTab1に新しい列を追加します。モデルに含めたくない他の変更として、データベースからモデルを更新したくない。エンティティTab1のモデルに新しいプロパティを手動で追加できます。その後、マッピングエラーが発生しました。

したがって、テーブルのModel.Storeを更新して、新しい列を含める必要があります。 Tab1のモデルのみを更新したいということです。

これどうやってするの?

31
KentZhou

EDMXファイルは、全体を構成する3つの異なる部分の組み合わせであるXMLファイルです。 EDMXファイルを右クリックして、[Open with ... XML Editor]を選択すると、3つの異なるセクションが表示されます。

  • <edmx:ConceptualModels>
  • <edmx:StorageModels>
  • <edmx:Mappings>

これらのセクションは、ご自身の責任で手動で編集できます! :-)
これにより、必要なものだけを変更できます。

モデルの「Meta Artifact Processing」プロパティを「Copy to Output Directory」に変更することにより、CSDL、SSDL、MSLファイルをバイナリファイルに埋め込むのではなく生成することもできます。

これを手動で行いたくない場合は、 Huagati DBML/EDMXツール があり、無料でダウンロードできます huagati公式サイト または visual studio gallery は、Visual Studioプラグインです。どの変更を行う必要があるかを選択します。

44
MaxSC

次の(条件付き)トリックを使用します。 これは、更新するテーブルに依存するテーブルがない場合にのみ実行できます。

  1. 更新する必要があるテーブルを削除します。
  2. モデルを右クリックし、「データベースからモデルを更新」を選択します。テーブルは「追加」タブに表示されます。このテーブルを選択して、モデルを更新します。

注意:他の既存のテーブルに変更がある場合、EFはこれらの変更も更新します。

6
Abhijeet Nagre