MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie kann man Mongo zwingen, Mitglieder in Kleinbuchstaben zu speichern?

Um IMemeberMapConvention verwenden zu können, müssen Sie sicherstellen, dass Sie Ihre Konventionen deklarieren, bevor der Zuordnungsprozess stattfindet. Oder löschen Sie optional vorhandene Zuordnungen und erstellen Sie neue.

Die folgende Reihenfolge ist beispielsweise die richtige Reihenfolge, um eine Konvention anzuwenden:

        // first: create the conventions
        var myConventions = new ConventionPack();
        myConventions.Add(new FooConvention());

        ConventionRegistry.Register(
           "My Custom Conventions",
           myConventions,
           t => true);

        // only then apply the mapping
        BsonClassMap.RegisterClassMap<Foo>(cm =>
        {
            cm.AutoMap();
        });

        // finally save 
        collection.RemoveAll();
        collection.InsertBatch(new Foo[]
                               {
                                   new Foo() {Text = "Hello world!"},
                                   new Foo() {Text = "Hello world!"},
                                   new Foo() {Text = "Hello world!"},
                               });

So wurde diese Beispielkonvention definiert:

public class FooConvention : IMemberMapConvention

    private string _name = "FooConvention";

    #region Implementation of IConvention

    public string Name
    {
        get { return _name; }
        private set { _name = value; }
    }

    public void Apply(BsonMemberMap memberMap)
    {
        if (memberMap.MemberName == "Text")
        {
            memberMap.SetElementName("NotText");
        }
    }

    #endregion
}

Dies sind die Ergebnisse, die herauskamen, als ich diese Probe durchführte. Sie konnten sehen, dass die Text-Eigenschaft als „NotText“ gespeichert wurde: