IMemeberMapConvention का उपयोग करने के लिए, आपको मानचित्रण प्रक्रिया होने से पहले अपने सम्मेलनों की घोषणा करना सुनिश्चित करना होगा। या वैकल्पिक रूप से मौजूदा मैपिंग को छोड़ दें और नए बनाएं।
उदाहरण के लिए, कन्वेंशन लागू करने का सही क्रम निम्नलिखित है:
// 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!"},
});
यहां बताया गया है कि यह नमूना सम्मेलन कैसे परिभाषित किया गया था:
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
}
जब मैंने इस नमूने को चलाया तो ये परिणाम सामने आए। आप देख सकते हैं कि टेक्स्ट प्रॉपर्टी "NotText" के रूप में सहेजी जा रही है: