У меня есть следующие два класса на моем C#, и я использую BsonElement для заказа собственности в Mongo Collection. Но Car collection не выполняет этот порядок.using MongoDB C# Код драйвера Поля документов с унаследованными объектами типа
Идея здесь иметь это общее поле в классе 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; }
}
коллекция автомобилей в Монго оказывается следующим. свойства базового класса приходят первые в документе и ребенка класса, хотя у меня есть 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 ... но, поскольку ваш класс настолько мал, почему наследование, или вы просто делаете это для практических целей ? – Hackerman
Это пример кода, у меня есть около 8 свойств в базовом классе, которые необходимо унаследовать во всех коллекциях Mongo (классы) и да, это также для практики. Если у меня есть 8 классов коллекции, я не хочу повторять эти свойства базового класса в 8 дочерних классах – HaBo
Просто для тестирования: и если вы удалите «Заказ» из базового класса? – Hackerman