流畅的NHibernate:列映射约定

时间:2010-08-30 20:17:26

标签: nhibernate fluent-nhibernate

我在使下列约定起作用时遇到了一些问题:

public class ColumnNameUpperConvention : IPropertyConvention
{
    public void Apply(IPropertyInstance instance)
    {          
        string cName = instance.Property.Name.ToUpper();
        instance.Column(cName);
    }
}

我想要的上述代码是将名为“Modified”的属性映射到名为“MODIFIED”的列。

这是我的配置:

var config =
    Fluently.Configure()
        .Database(OracleClientConfiguration.Oracle10
        .ConnectionString(c => c.FromConnectionStringWithKey(cstringName)))
        .Mappings(m =>
            {
                m.FluentMappings.AddFromAssemblyOf<AgilityObject>();
                m.AutoMappings.Add(
                        AutoMap.AssemblyOf<AgilityObject>(mappingConfiguration)
                       .Conventions.Add<ColumnNameUpperConvention>());
            })
        .ExposeConfiguration(x => x.SetProperty("current_session_context_class", "thread_static"))
        .ExposeConfiguration(x => x.SetProperty("generate_statistics", "true"))
        .BuildSessionFactory();

当我调试时,我可以看到我的约定代码被执行,但它似乎并不像 那样。

我错过了什么吗?

PS。我在ClassMap中明确设置的映射是否会自动覆盖约定?上述约定有例外,我想手动映射这些属性。

1 个答案:

答案 0 :(得分:0)

我的坏。如果我要使用AutoMapping,我需要使用IAutoMappingOverride而不是ClassMap。