2012-05-08 3 views
1

私のデータベースには、他のエンティティが生成したテーブルで操作する必要のある「viewUsers」というビューがあります。エンティティでこのデータベースビューを取得するにはどうすればよいですか?エンティティを使用したSQLビューの取得

+0

これはかなり単純です... Entity FrameworkでEDMXファイルを設定すると、ウィザードで直接テーブル/ビュー/ストアドプロシージャ...を選択できます。ここでは何もしないようにしようとしています...あなたのプロジェクトのエンティティとしてビューをインポートすることについて話しているサンプルポストです... http://smehrozalam.wordpress.com/2009/08/12/entity-framework-creating- a-model-using-views-of-tables/...これが役に立ったかどうかを教えてください... – NiK

答えて

2

ウィザードでは、[ビュー]を選択できます。 EFは安心して世話をします。詳細な例here

enter image description here

EDIT:Entity Frameworkの4.2のようにコメントを1として(codefirstでそれを行う方法)、

、Codefirstはテーブルのみのサポートが組み込まれています。つまり、テーブルを含むスキーマのみを生成することができます。しかし、既存のデータベースを使って作業している場合は、更新可能なビューとエンティティをマッピングできます。エンティティフレームワークを使用して、データの選択、挿入、更新、および削除を行うことができます。これはテーブルと同じように動作します。これらの操作のためにSQL構文がテーブルとビューで同じなので、は、ビューがテーブルであることを最初に宣言しています。

例:私たちは、ビューからのデータがCustomerDetailと呼ばれるエンティティのvwCustomerDetailsと呼ばれ、私たちは、データの注釈代わり

[Table("vwCustomerDetails")] 
public class CustomerDetail 
{ 
    // properties 
} 

と、次のように行うことができます取得したい場合は、流暢APIを使用すると、あなたがこれを行うことができ、ノーマルビューから

modelBuilder.Entity<CustomerDetail>().ToTable("vwCustomerDetails"); 

のデータのロード

時々、最初の偽のテーブル(ビュー)と同じ結果を返す、別のビューからデータをロードすることができます。例:いくつかのページでは、最も高い得点を挙げた上位10のCustomerDetailsを表示する必要があります。そのためにvwTop10Customersと呼ばれる別のビューがあるとします。私たちは、ビューは、エンティティのとまったく同じカラム名を返す必要があり、この

var topCustomers=dbContext.CustomerDetails.SqlQuery("SELECT * FROM vwTop10Customers"); 

ようentotuesをロードするためにDBSet上のSQLQueryメソッドを使用することができます。さもなければEFはそれをマッピングするための問題を持ちます。

+0

私はちょっとした研究をしましたが、.emdxはコードでは最初に動作しません。ビューを返すために手動のSQLクエリを実行しますか(ここで説明していますか?http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/advanced-entity-framework-scenarios- for-an-mvc-web-application – user1302382

+0

@ user1302382:私の更新された答えを見てください。 – Shyju

関連する問題