8

私はEF4を使用しています。最初にコードを書きます。[NotMapped]そのため、私のモデル クラスには、パブリック プロパティ、いくつかの仮想プロパティ (他のテーブルからの遅延読み込みデータ用)、およびEF によってスキップされるように属性が付加されたいくつかのプロパティが混在しています。

ときどき生のクエリを利用したいことがあります: c.Database.SqlQuery<T>("select ...")EF を行マッパーとして使用するためです。

Intellitrace で、これらのクエリが「IndexOutOfRange」のスローされた例外とキャッチされた例外を大量に生成していることに気付きました。いくつか見てみると、例外はすべてモデル オブジェクトの仮想プロパティと [NotMapped] プロパティです。テーブル プロパティだけを含む新しいデータ モデル クラスまたは親クラスを作成する必要はありません。生のクエリランナーの行マッパーに、EFの残りの部分が使用するのと同じ注釈に注意を払うように伝えるために見逃した構成手順はありますか? 多分彼らはEF5でこれを修正しましたか?

4

1 に答える 1

5

EFを実行するdbContext.Database.SqlQueryと、マッピングは使用されません。結果セット内のプロパティ名と列の単純な一致のみを使用します。dbSet.SqlQuery代わりに使用してみてください。アタッチされたエンティティとしてデータをロードできるため、マッピングを反映する必要があります。

于 2012-09-24T22:04:56.330 に答える