我想指定一个列名称约定,基本上需要一个pascal封装字段并将其转换为全部带有下划线的大写字母。因此,属性OrderId成为“ORDER_ID”列。我也希望只有当我没有在映射中指定一个时才应用这个约定。到目前为止,我的骨架如下:列名称约定
public class PascalCaseColumnNameConvention : IPropertyConvention
{
public bool Accept(IPropertyInstance instance)
{
//Not sure what I should have here
}
public void Apply(IPropertyInstance instance)
{
instance.Column(instance.Property.Name.ChangePascalCaseToUnderscore());
}
}
还有没有更好的方法来调整除了字符串扩展方法的情况?任何已经在做这类事情的图书馆?
我运行了一些测试,如果我已经指定了一个列名,它似乎不会“忽略”这个约定。它仍然试图应用该公约。我在我的字符串扩展方法中写了一些额外的处理来检测这个,但只是想我会让你知道。 – 2011-04-15 23:46:32
@Cole W - 你说得对,用户定义的对流比覆盖更重要,对我来说很陌生。无论如何,我尝试了另一种解决方案 - 请参阅编辑。 – NOtherDev 2011-04-16 10:52:54