1

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

4

1 に答える 1

2

ウィザードで、[ビュー]を選択できます。EFが残りの面倒をみます。詳細な例 はこちら

ここに画像の説明を入力してください

編集:コメント(コードファーストでそれを行う方法)に従って、

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

vwCustomerDetails例:というエンティティに対して呼び出されたビューからデータを取得する場合は、CustomerDetailデータアノテーションを使用してこのようにすることができます

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

または、Fluent APIを使用すると、これを行うことができます。

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

通常のビューからのデータのロード

最初の偽のテーブル(ビュー)と同じ結果を返す別のビューからデータをロードしたい場合があります。例:一部のページでは、最高点を獲得した上位10のCustomerDetailsを表示する必要があります。そのために呼び出された別のビューがあると仮定vwTop10Customersします。DBSetのSqlQueryメソッドを使用して、次のようなエントチューをロードできます。

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

ビューは、エンティティとまったく同じ列名を返す必要があります。そうしないと、EFはそれをマッピングする際に問題が発生します。

于 2012-05-08T20:23:47.753 に答える