20

私は、Entity Frameworkでdbから生成されたモデルを持っています。私がデータベースに変更を加えたら、データベースからモデルを更新してモデルの変更を取得します。しかし、このアップデートは、モデルに含まれるすべてのエンティティ(テーブル)に適用されます。Entity Frameworkを使用してデータベースからモデル用のテーブルを1つだけ更新する方法

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

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

どうすればいいですか?

答えて

39

EDMXファイルは、全体を構成する3つの異なる部分の組み合わせであるXMLファイルです。あなたはEDMXファイルを右クリックし、 "と... XMLエディタを開き、" 選択した場合は、3の異なるセクションが表示されます:

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

これらのセクションは、自己責任で編集することができます。 :-)
あなたはあなたが必要なものだけを変更することができます。

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

あなたはHuagati DBML/EDMX toolがあります、手動でこれを行うにはしたくない場合は、それは自由であり、あなたが行われる必要がどのような変更を選択することを可能にするVisual Studioのプラグインである、huagati official siteからかvisual studio galleryからそれをダウンロードすることができます。

+0

ありがとうございます。私はそれを手動で行う。だから、それは自動的に1つのオブジェクトの "データベースからの更新"を好む方法はありません。 – KentZhou

+2

私が知る唯一の方法は、[Huagati DBML/EDMXツール](http://www.huagati.com/dbmltools/)です。ところで、私はそれを作った人ではありません!;-) – MaxSC

+0

そして、それが助けになったと思ったら、アップホートしたり、答えを忘れたりしないでください!ありがとう;-) – MaxSC

-14

自動的に行う方法があります。

右クリックedmxファイル>データベースからモデルを更新> [更新]タブ> [テーブル]>(更新したい)テーブルを選択し、それを終了します。

+7

これは正しいとは思わない/私が知ることから、最新表示タブのすべてを更新します。それはOPの元の問題(と私の)です。 –

+2

これは投稿された質問を解決するものではなく、モデル全体をリフレッシュするときに害を及ぼす可能性があります。 –

+3

UIは1つのテーブルのみを更新できるように見せますが、その結果、すべてのテーブルが更新されます。残念ながら、この回答は間違っています。編集者がここに記載されているように更新されていれば素晴らしいだろう。 –

5

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

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

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

+2

これは私のために他のテーブルの列を更新します。 – Marshal

+1

Hmm .. EFは他のテーブルの列も更新します。これを避ける方法を知らないでください。 :-( –

関連する問題