带有对象的MongoDB序列化和带有官方C#驱动程序的对象的arraylist
我有一个例子: public class Test { private ObjectId _mongoID; private A _a = new A(); private ArrayList _alData = new ArrayList(); // Arraylist of B objects #endregion public Test(A a, ArrayList alData) { _a = a; _alData = alData; } [BsonId] public ObjectId MongoID { get; set; } public A a { get { return _a; } } public Array dta { get { return _alData.ToArray(); } } } 公开课考试 { 私有对象; 私有A_A=新A(); 私有ArrayList _-alData=new ArrayList();//B对象的ArrayList #端区 公共测试(A、A、ArrayList-alData) { _a=a; _alData=alData; } [BsonId] 公共对象MongoID { 得到; 设置 } 公共的 { 得到 { 返回a; } } 公共阵列dta { 得到 { return_alData.ToArray(); } } } 我希望有这样的结果: { "_id" : ObjectId("000000000000000000000000"), "_a":{A members}, "dta":[{B members}, {B members}]} {u id:ObjectId(“000000000000000000000000”),“\u a”:{a members},“dta”:[{B members},{B members}]} 我该怎么办 谢谢带有对象的MongoDB序列化和带有官方C#驱动程序的对象的arraylist,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我有一个例子: public class Test { private ObjectId _mongoID; private A _a = new A(); private ArrayList _alData = new ArrayList(); // Arraylist of B objects #endregion public Test(A a, ArrayList alData) {
此类为只读且不可变。这是你的意图吗?如果是这样的话,那么下面是实现你所要求的最好的方法。注意,您需要至少使用驱动程序版本1.4.1才能工作,并且无法从数据库中读取此类。仅由于属性的只读性质,它才会持久化
public class Test
{
private A _a;
private ArrayList _alData;
[BsonId]
public ObjectId Id { get; set;}
[BsonElement("_a")]
public A A { get { return _a; } }
[BsonElement]
public Array dta { get { return _alData.ToArray(); } }
}
谢谢我将一些数据从关系数据库导出到MongoDB。只读对我有好处;-)