【发布时间】: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