Id、Name、BinaryDataの各プロパティを持つ添付ファイルを持つことができるパンチを含むモデルがあります。EF6に部分的なエンティティのみを含める
私が行う場合は、次の添付ファイルが多く、大規模の両方をすることができるため
var result = context.PunchSet
.Where(p => p.PunchType == punchType && p.Project.Id == projectId)
.Include(c => c.Contractor)
.Include(c => c.ClearedBy)
.Include(c => c.CreatedBy)
.Include(a => a.Attachments)
クエリはmolassisとして遅いです。この場合、必要なのは添付ファイルのIDと名前だけです。
var result = context.PunchSet
.Where(p => p.PunchType == punchType && p.Project.Id == projectId)
.Include(c => c.Contractor)
.Include(c => c.ClearedBy)
.Include(c => c.CreatedBy)
.Include(a => a.Attachments.Select(a2 => new Attachment() { Id=a2.Id, Name=a2.Name});
をしかし、それは、このエラーで終わる:だから私は試した
The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties. Parameter name: path
は、それは意味、私は時間のために立ち往生していたもののアイデアを持っていません。どのように結果に部分的なentitiyを含めることができますか?私。バイナリデータを読み込まないでください。
を望むように
その後、あなたは繰り返すことができます。ただし、更新するのではなく読み込むだけの場合は、インクルードファイルに添付ファイルを残して別々に読み込むことができます。 – grek40
同じクエリでこれを行うにはどうすればよいですか?私は500個のパンチをロードしたくないので、ループを張って添付ファイルを取り出す必要があります(もしあれば)。これは、良い古いSQLの5分の仕事です。時にはこのEF6のものが私に届いています。 – Paaland
部分的に関連するエンティティを読み込む必要がある場合は、匿名型またはDTOを使用してクエリを投影する必要があります。例外が説明するように、ナビゲーションプロパティは 'Include'拡張メソッドでのみ参照できます – octavioccl