2010-08-30 111 views
0

我有一些問題,得到以下約定的工作:功能NHibernate:列映射約定

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

我想要什麼上面的代碼做的是映射一個叫做財產「修改」,以一個名爲「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中顯式設置的映射是否會自動覆蓋約定?上述慣例有例外,我想手動映射這些屬性。

回答

0

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