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

MongoDBを使用するときに慣例によりBsonRepresentation属性を適用する方法

    ええ、私もそれに気づきました。 StringObjectIdIdGeneratorConventionの現在の実装 何らかの理由で動作しないようです。動作するものは次のとおりです:

    public class Person
    {
        public string Id { get; set; }
        public string Name { get; set; }
    }
    
    public class StringObjectIdIdGeneratorConventionThatWorks : ConventionBase, IPostProcessingConvention
    {
        /// <summary>
        /// Applies a post processing modification to the class map.
        /// </summary>
        /// <param name="classMap">The class map.</param>
        public void PostProcess(BsonClassMap classMap)
        {
            var idMemberMap = classMap.IdMemberMap;
            if (idMemberMap == null || idMemberMap.IdGenerator != null)
                return;
            if (idMemberMap.MemberType == typeof(string))
            {
                idMemberMap.SetIdGenerator(StringObjectIdGenerator.Instance).SetSerializer(new StringSerializer(BsonType.ObjectId));
            }
        }
    }
    
    public class Program
    {
        static void Main(string[] args)
        {
            ConventionPack cp = new ConventionPack();
            cp.Add(new StringObjectIdIdGeneratorConventionThatWorks());
            ConventionRegistry.Register("TreatAllStringIdsProperly", cp, _ => true);
    
            var collection = new MongoClient().GetDatabase("test").GetCollection<Person>("persons");
    
            Person person = new Person();
            person.Name = "Name";
    
            collection.InsertOne(person);
    
            Console.ReadLine();
        }
    }
    


    1. ターミナルでルートパスワードなしでMySQLに接続する方法

    2. パイプライン集約(mongoDB)でドキュメント内の2つのフィールドを比較する方法

    3. モンゴ+乗客:レール内からデータベースに再接続する正しい方法は?最適なモンゴパフォーマンスを確保する方法は?

    4. 過去24時間のドキュメントのマングースクエリ、1時間に1つのドキュメントのみ