単純なモデルを考えると:
public class Model{
private string _id;
[BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
[BsonRepresentation(BsonType.ObjectId)]
public string Id {
get { return _id; }
set { _id = value; }
}
//Additional fields
}
クエリに基づいて、このクラスからいくつかのフィールドのみを選択したいとします。
_collection.AsQueryable<Model>().Where(m => m.Id == id)
.Select( x =>
new Model(){
Id = x.Id,
SomeField = x.SomeField
});
次のエラーが発生します: 要素 'Id' はクラス Model のどのフィールドまたはプロパティとも一致しません。
select 句がない場合、Id が設定され、期待どおりに返されます。また、選択からフィールド Id を削除すると、Id が null になることを除いて、期待どおりにすべてが返されます。
select を使用して、返されるデータの量を制限します。動的オブジェクトを使用する (または渡す新しいオブジェクトを作成する) こともできますが、冗長なようです。
この問題に対する提案はありますか?