sql >> データベース >  >> NoSQL >> MongoDB

MongoDB複合キー:InvalidOperationException:{document}.Identityはサポートされていません

    GetPropertiesを介して行われるコンストラクターポストを介したハイドレーションを見ていました 。

    したがって、public readonly Sku Sku; classMap.ClassType.GetTypeInfo().GetProperties(_bindingFlags)からは表示されません メンバーフィールドとしてのみアクセスできるためです。

    public Sku Sku { get; } そのため、GetPropertiesを介してコンストラクターを介してハイドレイトされます すべての読み取り専用フィールドを変更します(Sku - VendorId, ValueVendorId - Value フィールド)プロパティゲッターメソッドがあります。

    また、cm.MapProperty(c => c.Identity)を追加する必要があります したがって、x=>x.Identity.Equals(entity.Identity) Identityのため、式として使用するとシリアル化できます ImmutablePocoConventionを介して水分補給および登録することはできません 自動マップロジックの実行時にはコンストラクター引数ではないためです。

    コードの変更:

    public class Sku : Identity<Product>
    {
        public VendorId VendorId { get; }
        public string Value { get; }
    }
    
    public class VendorId : Identity<Vendor>
    {
        public string Value { get; }
    }
    
    BsonClassMap.RegisterClassMap<Product>(cm =>
    {
       cm.AutoMap();
       cm.MapIdMember(c => c.Sku);
       cm.MapProperty(c => c.Identity);
    });
    


    1. MongoDB集計$divide計算フィールド

    2. MongoDBバウンドクエリ:マイルをラジアンに変換するにはどうすればよいですか?

    3. 例外を回避する方法mongoDBJavaドライバー3.4以降または3.6以降を使用してストリームの終わりに時期尚早に到達しましたか? (挿入時)

    4. Mongo集計を使用して値の合計を計算する