1

エンティティ フレームワークと生の SQL クエリを使用しています。ビューはありますが、一部のフィールドのみを取得したい場合があります。これは、1 つのフィールドがファイル ストリームであり、サイズが大きいためです。

ただし、たとえば次のSQLを使用すると:

select Name, Surname from persons

リーダーにフィールド XXX がないという例外が発生します。これは、ビューのエンティティにビューのすべてのフィールドがあるためですが、クエリを実行すると、結果がすべてのフィールドを返さないためです。

生の sql を使用して、型の人のリストを取得したいのですが、var 型の使用を避けたいということです。

STE を使用しているため、遅延読み込みを使用できません。セルフ トラッキング エンティティは遅延読み込みをサポートしていません。

それは可能ですか?ビューのいくつかのフィールドのみを選択するか、必要なフィールドのみを含む新しいビューを作成しますか? これが正しければ、エンティティ フレームワークのみが常にすべてのフィールドを返すことができますか? これは場合によっては非効率的です。

要約すると、STE と生の SQL を使用して一部のフィールドのみを選択できるかどうかを知りたいです。

ありがとう。

4

1 に答える 1

4

これを自己追跡エンティティに適用することについてはよくわかりませんが、これまで常にこれを行ってきた方法は、エンティティよりも小さい匿名クラス (または作成したクラス) を使用することです。

context.People.Select(p=>new { Name = p.Name, Surname = p.Surname })

これにより、質問に記載されているものと同様のSQL選択が実行されます

于 2012-06-07T20:37:05.863 に答える