给定一个简单的模型:
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 将为空。
我们想使用 select 来限制返回的数据量。我们可以使用动态对象(或创建一个新对象来传递),但似乎是多余的。
对这个问题有什么建议吗?