私はC#で次の2つのクラスを持っており、Mongo Collectionのプロパティ順序にBsonElementを使用しています。しかし、Carコレクションはこの命令を実装していません。ここMongoDB C#を使用したドライバの注文ドキュメントフィールド継承された型オブジェクトのフィールド
アイデアは、モンゴのほぼすべてのクラス
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; }
}
カーコレクションは、以下の通りであることが判明BaseEntity
クラスでは、この一般的なフィールドを持っており、これを上の継承することです。私は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
これはコード例です。すべてのMongo Collections(クラス)で継承される必要があるBaseクラスのプロパティが約8あり、それは練習用です。私は8つのコレクションクラスを持っている場合私は8子クラスのこの基本クラスのプロパティを繰り返すしたくない – HaBo
テストのためだけ:と基本クラスから注文を削除する場合は? – Hackerman