【问题标题】:Fluent NHibernate: Column mapping conventionFluent NHibernate:列映射约定
【发布时间】:2010-08-30 20:17:25
【问题描述】:

我在使以下约定生效时遇到了一些问题:

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 中明确设置的映射是否会自动覆盖约定?上述约定有例外,我想手动映射这些属性。

【问题讨论】:

    标签: nhibernate fluent-nhibernate


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 2012-10-19
      相关资源
      最近更新 更多