web-dev-qa-db-ja.com

Entity Framework 4コードファーストを使用してデータベースビューを定義するにはどうすればよいですか?

Entity Framework 4コードファーストを使用してデータベースビューを定義するにはどうすればよいですか?これについてはどこにも見つかりません!

18
Ian Warburton

これは、コードファーストのアプローチを使用してデータベースビューを定義できないためです。データベースビューは、既存のテーブル/関数の上でSQLクエリを使用するデータベース構造です。最初にコードを使用してそのような構造を定義することはできません。

ビューが必要な場合は、たとえばカスタム初期化子でCREATE VIEW SQLスクリプトを実行して手動で作成する必要があります この回答 のようになります。エンティティをビューにマップする場合、これは役に立たないことに注意してください。このような場合、最初にEFによって作成されたテーブルを削除し、同じ名前でビューを作成する必要があります(私は試していませんが、うまくいく可能性があります)。また、すべてのビューが更新可能であるとは限らないため、おそらく読み取り専用エンティティを取得することに注意してください。

17
Ladislav Mrnka

ビューを実行するには、モデルを作成し、イニシャライザでSQLステートメントを実行して、コードの最初の行のコンテキストに対して直接ビューを作成します。次に、コンテキストでOnModelCreatingをオーバーライドし、コードの2行目を実行して無視します。モデル。

context.Database.ExecuteSqlCommand(Resources.<resourcename>);

modelBuilder.Ignore<modeltype>();
14
Mike Perrenoud