【发布时间】:2016-11-30 11:22:26
【问题描述】:
我的 C# 中有以下两个类,我在 Mongo Collection 中使用 BsonElement 进行属性顺序。但是 Car collection 没有实现这个顺序。
这里的想法是在BaseEntity 类中拥有这个公共字段并在几乎所有类上继承它
public class Car: BaseEntity{
[BsonElement(Order = 1)]
public string Color{ get; set; }
[BsonElement(Order = 2)]
public long Price{ get; set; }
}
public class BaseEntity{
[BsonElement(Order = 99)]
public DateTime DateAdded{ get; set; }
[BsonElement(Order = 100)]
public bool IsActive{ get; set; }
}
Mongo 中的汽车收集结果如下。尽管我有 BsonElement(Order=xx)
{
"_id" :ObjectId(fsdfsdfsdfsdfs),
"DateAdded": ISO("SomeDate"),
"IsActive" : true,
"Color" : "Red",
"Price" : NumberLong(23564)
}
我希望它看起来像
{
"_id" :ObjectId(fsdfsdfsdfsdfs),
"Color" : "Red",
"Price" : NumberLong(23564)
"DateAdded": ISO("SomeDate"),
"IsActive" : true
}
司机详情
<package id="mongocsharpdriver" version="2.2.4" targetFramework="net461" />
<package id="MongoDB.Bson" version="2.2.4" targetFramework="net461" />
<package id="MongoDB.Driver" version="2.2.4" targetFramework="net461" />
<package id="MongoDB.Driver.Core" version="2.2.4" targetFramework="net461" />
【问题讨论】:
-
这个顺序是有道理的,因为你正在实现继承......这就是为什么基类首先订购......覆盖它的唯一方法应该是实现一个覆盖 BsonElement 的类......但是,既然你的类这么小,为什么要继承,或者你只是为了练习目的?
-
这是一个示例代码,我在 Base 类中有大约 8 个属性,需要在所有 Mongo 集合(类)中继承,是的,它也用于练习。如果我有 8 个 Collection 类,我不想在 8 个子类中重复这个基类属性
-
仅用于测试:如果您从基类中删除 Order?
-
有无订单没有区别
-
这很奇怪....根据文档
Any fields or properties that do not have an explicit Order will occur after those that do have an Order.
标签: c# asp.net-mvc mongodb c#-4.0 bson