使用FluentNHibernate帮助创建ColumnName约定

时间:2010-05-14 02:36:26

标签: c# nhibernate fluent-nhibernate

我一直在尝试为数据库表列指定自定义命名约定。到目前为止,我已经能够为表的名称设置约定,但不是实际的列。我在互联网上看过一些指南,但他们没有使用最新的Fluent NHibernate(1.0.0 RTM)。

public class CamelCaseSplitNamingConvention : IClassConvention, IComponentConvention
{
    public void Apply(IClassInstance instance)
    {
        instance.Table(instance.EntityType.Name.ChangeCamelCaseToUnderscore());
    }

    public void Apply(IComponentInstance instance)
    {
        // is this the correct call for columns? If not, which one?
    }
}

请帮忙。

1 个答案:

答案 0 :(得分:4)

要为列名创建约定,您应该使用 IPropertyConvention 而不是IComponentConvention。

例如(使用相同的方法将camel case转换为下划线,如示例代码中所示):

public class ColumnNameConvention : IPropertyConvention
{
    public void Apply(IPropertyInstance instance)
    {
        instance.Column(instance.Property.Name.ChangeCamelCaseToUnderscore());
    }
}