Để sử dụng IMemeberMapConvention, bạn phải đảm bảo khai báo các quy ước của mình trước khi quá trình ánh xạ diễn ra. Hoặc tùy chọn bỏ các ánh xạ hiện có và tạo các ánh xạ mới.
Ví dụ:sau đây là thứ tự đúng để áp dụng quy ước:
// 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!"},
});
Đây là cách quy ước mẫu này được xác định:
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
}
Đây là những kết quả được đưa ra khi tôi chạy mẫu này. Bạn có thể thấy thuộc tính Văn bản đã được lưu dưới dạng "NotText":