web-dev-qa-db-ja.com

Entity Framework5 / 6で更新可能なビュー

http://technet.Microsoft.com/en-us/library/ms187956.aspx に従って更新可能なビューがいくつかあります。

私の見解はすべて、前述の記事の仕様に従っています。 SQL Management Studioで、ビューを更新、挿入、および削除できることを確認しました。

私が行った調査により、Entity Framework5/6モデルのビューを更新可能にする2つのオプションが見つかりました。

  1. 各ビューからタグを削除しますが、データベースからコンテキストを更新すると、MyContext.edmxで行われた作業はすべて上書きされます。これは、このソリューションが私のプロジェクトにとってあまり実行可能ではないことを意味します。

  2. ビューごとにストアドプロシージャの挿入、更新、削除を追加し、これらをデザイナでマッピングします。これほど多くのストアドプロシージャを作成する必要があるという考えは特に好きではありません。

EF5 OR EF6に、ビューを追加/更新/削除できることを、ストアドを書き込まずに後続の「データベースからモデルを更新」コマンドを実行しても消去されないことを伝える簡単な方法はありますか?各ビューの各入力方法(挿入、更新、削除)の手順?

29
puddinman13

最も簡単な方法は、StorageModelのEntitySetの定義を変更して、データベースビューではなくテーブルと見なすように指示することだと思います。

XML定義を見てください。

<EntitySet Name="Products" store:Type="Views" ..

あなたはそれをに変更します

<EntitySet Name="Products" store:Type="Tables" ..

(「製品」は単なる例であることに注意してください)これは.edmxファイルにあるはずです。
44ページ、Lerman、「Programming Entity Framework」、第2版を参照してください。

お役に立てれば。

8
JamesWHurst

.edmxを使用する代わりに、pocoクラスを使用し、dbcontextクラスとmodelbuilderクラスを使用して、非常に軽量であるか、データベースを更新するたびに更新されないようにマッピングすると思います。その非常に効率的でスケーラブル

それが役立つことを願っています。

1
Pankaj Gupta

ビューから主キーを取得し、主キーを使用して更新ステートメントを実行できます。回避するための単なる方法。

0
lengsiqi