1

dbase(oracle)ビューに対して使用する場合

from f in MYVIEW
where f.Order=="HERE"
select f

同じ結果(行)が得られます。

と...

from f in MYVIEW
where f.Order=="HERE"
select f.ColA

ColA に対して正しい結果が返されます

これは初心者の質問に違いないことを知っています。まだ学習中です...よろしくお願いします

4

1 に答える 1

3

その理由は、既定では EF がすべてのレコードを一意に識別する必要があるためです。そのため、すべてのエンティティには一意のキーが必要です。ビューにはキーがないため、EF は、バイナリ データを含まないすべての null 非許容列を使用してキーを推測します。これで、EF は、これらの列によってエンティティが一意に識別できるようになることを期待しています。そうでない場合は、最初の例で見た問題で終わります。EF が結果セットからエンティティを読み取るときにキーをチェックし、同じキーを持つエンティティが既に作成されている場合は、新しいインスタンスを作成する代わりにそのインスタンスを使用します -> キー列に同じ値を持つ結果セットのすべてのレコードが表示されます同じエンティティ インスタンスによって。今日は、ビューでこの問題を回避する方法について説明しました。

2 番目の例では、射影を使用します。このような場合、エンティティ インスタンスは構築されず、EF は単に値を返します。

于 2012-04-30T15:45:24.540 に答える