Deserialization LiteDb类反序列化不起作用

Deserialization LiteDb类反序列化不起作用,deserialization,litedb,Deserialization,Litedb,我有一个B班,有一个a班的成员。正如我在LiteDb Studio中看到的那样,LiteDb可以正确地存储它。“As”集合也可以。为什么反序列化不正确?A类有一个BsonCtor。B也 namespace ConsoleAppTestDeserializatioBug { class Program { public class A { public A() { A_ID = ObjectId.NewObjectId(); }

我有一个B班,有一个a班的成员。正如我在LiteDb Studio中看到的那样,LiteDb可以正确地存储它。“As”集合也可以。为什么反序列化不正确?A类有一个BsonCtor。B也

namespace ConsoleAppTestDeserializatioBug {
    class Program {
        public class A {
            public A() { A_ID = ObjectId.NewObjectId(); }
            [BsonCtor]
            public A(ObjectId id, string name) { A_ID = id; Name = name; }
            [BsonId]
            public ObjectId A_ID { get; set; }
            public string Name { get; set; }
            public const string CollectionName = "As";
        }
        public class B {
            public const string CollectionName = "Bs";
            public B() { B_ID = ObjectId.NewObjectId(); }
            [BsonCtor]
            public B(ObjectId id, int dummy, A a) { B_ID = id; Dummy = dummy; aObj = a;}
            [BsonId]
            public ObjectId B_ID { get; set; }
            public int Dummy { get; set; }
            [BsonRef(A.CollectionName)]
            public A aObj { get; set; }
        }
        private LiteDatabase _LiteDatabase;
        static void Main(string[] args) {
            var p = new Program();
            p.Test();
        }
        private void Test() {
            A a = new A(); // Create my Object
            a.Name = "Name123";
            var initialId = a.A_ID;
            B b = new B();
            b.Dummy = 123;
            b.aObj = a;
                 _LiteDatabase = new LiteDatabase(new ConnectionString(@"C:\Temp\tst1.db") { Connection = ConnectionType.Shared });
            ILiteCollection<A> aas = _LiteDatabase.GetCollection<A>(A.CollectionName);
            aas.Insert(a);
            ILiteCollection<B> bs = _LiteDatabase.GetCollection<B>(B.CollectionName);
            bs.Insert(b);

            // Get in the DB
            var bb = bs.FindAll().ToArray()[0];
            var aa = bb.aObj;
            var aaid = aa.A_ID;
            if (aaid == initialId) { Console.WriteLine("Id is correct");}
            var aname = aa.Name; // aname i s null!!!!! and why
        }
    }
}
名称空间控制台AppTestDeserializationbug{
班级计划{
公共A类{
公共A(){A_ID=ObjectId.NewObjectId();}
[主持人]
公共A(ObjectId,string name){A_id=id;name=name;}
[BsonId]
公共ObjectId A_ID{get;set;}
公共字符串名称{get;set;}
public const string CollectionName=“As”;
}
公共B级{
public const string CollectionName=“Bs”;
公共B(){B_ID=ObjectId.NewObjectId();}
[主持人]
公共B(ObjectId,int dummy,aa){B_id=id;dummy=dummy;aObj=A;}
[BsonId]
公共ObjectId B_ID{get;set;}
公共int伪{get;set;}
[BsonRef(A.CollectionName)]
公共A aObj{get;set;}
}
私有LiteDatabase_LiteDatabase;
静态void Main(字符串[]参数){
var p=新程序();
p、 Test();
}
专用无效测试(){
A=新建A();//创建我的对象
a、 Name=“Name123”;
var initialId=a.a\u ID;
B=新的B();
b、 假人=123;
b、 aObj=a;
_LiteDatabase=新的LiteDatabase(新的ConnectionString(@“C:\Temp\tst1.db”){Connection=ConnectionType.Shared});
ILiteCollection aas=_LiteDatabase.GetCollection(A.CollectionName);
aas.插入(a);
ILiteCollection bs=_LiteDatabase.GetCollection(B.CollectionName);
bs.插入(b);
//进入数据库
var bb=bs.FindAll().ToArray()[0];
var aa=bb.aObj;
var aaid=aa.A_ID;
如果(aaid==initialId){Console.WriteLine(“Id正确”);}
var aname=aa.Name;//aname为空!!!!!为什么
}
}
}
我在

我必须在我的查询中添加一个“include”:

var bb = bs.Include(x => x.aObj).FindAll().ToArray()[0];