0

私はSQLServer2008で通常のビューを持っており、エンティティフレームワークを使用してデータベースアプローチから設計を生成しています。エンティティフレームワークのビューの重要な問題についてはすでに知っていますが、それは私の解決策ではありません。ビューからselect*をクエリすると、正しい3つの行が表示されますが、すべての行は同じであり、データベースビューの最初の行です。

いくつかの助けをいただければ幸いです。

4

1 に答える 1

6

エンティティ フレームワークのビューの重要な問題については既に知っていますが、それは私の解決策ではありません。ビューからselect *をクエリすると、正しい3行が表示されますが、すべての行は同じで、データベースビューの最初の行です。

あなたが説明しているのは、正しくないキーによって引き起こされた問題です。3 つの行には一意の ID が必要です。一部の列または列のセットは、返される可能性のある各レコードを一意に識別する必要があります。これらの列は、デザイナーでエンティティ キーとして設定する必要があります。

返されるエンティティは読み取り専用であるため、ビューからデータを読み込むときに変更追跡を使用しないことで、この問題を回避することもできます。MergeOption.NoTrackingそのために使用する必要がありますObjectSet

context.MyViewEntities.MergeOption = MergeOption.NoTracking;
var data = context.MyViewEntities.ToList();
于 2012-09-02T21:32:22.267 に答える