У меня проблема с запросом Mongodb. Вот классы:
class A
{
}
class B : A
{
}
class C : A
{
public string prop1 { get; set; }
}
class D
{
public List<A> collection1 { get; set; }
}
И запрос:
var query1 = Query<D>.ElemMatch(d => d.collection1.OfType<C>(),
builder => builder.EQ(c => c.prop1, "val1"));
Короче говоря, я хочу выбрать все экземпляры класса D, чья коллекция «коллекция1» содержит хотя бы один экземпляр класса С, чье свойство «prop1» равно «val1».
Это продолжает выдавать «Невозможно определить информацию о сериализации для выражения» на ровном месте.
Что я делаю не так? Я пытался украсить "A" с помощью BsonKnownTypes(typeof(B), typeof(C)) безрезультатно.
PS: если бы у меня был только один класс A:
class A
{
public string prop1 { get; set; }
}
class D
{
public List<A> collection1 { get; set; }
}
тогда этот код работает и делает именно то, что я хочу:
var query1 = Query<D>.ElemMatch(d => d.collection1,
builder => builder.EQ(c => c.prop1, "val1"));
но это не то, что я хочу, я хочу сохранить «B» и «C», которые наследуются от «A».