C# MongoDB:嵌套数组的类型化表达式是';使用自定义映射时不工作
我有以下型号:C# MongoDB:嵌套数组的类型化表达式是';使用自定义映射时不工作,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我有以下型号: public class Entity { public ObjectId Id; private List<Item> _itemList; public virtual IReadOnlyList<Item> ItemList => _itemList.ToImmutableList(); } public class Item { public string ItemId; priv
public class Entity
{
public ObjectId Id;
private List<Item> _itemList;
public virtual IReadOnlyList<Item> ItemList => _itemList.ToImmutableList();
}
public class Item
{
public string ItemId;
private List<string> _subItemList;
public virtual IReadOnlyList<string> SubItemList => _subItemList.ToImmutableList();
}
错误:
无法确定e=>e.ItemList的序列化信息
我想知道是否有任何优雅的方式使它工作
当然,如果我将e.ItemList
替换为e.\u ItemList
,并将\u ItemList
公开,并且与\u subItemList
相同,它可以工作,但会破坏封装
public virtual BsonMemberMap MapList<TMember>(Expression<Func<TEntity, TMember>> memberListLambda)
where TMember : IEnumerable
{
var memberExpression = memberListLambda.Body as MemberExpression;
var fieldName = $"_{memberExpression.Member.Name.ToCamelCase()}";
return MapField(fieldName).SetIgnoreIfNull(true);
}
var filter = Builders<Entity>.Filter;
var update = Builders<Entity>.Update;
Collection.UpdateManyAsync(
filter.Eq(e => e.Id, id) & filter.ElemMatch(e => e.ItemList, Builders<Item>.Filter.Eq(i => i.ItemId, itemId)),
update.AddToSet(e => e.ItemList[-1].SubItemList, subItemValue));