2013-10-17 22 views

回答

3

我用流利的NHibernate的,所以我會改變他們是這樣的:

var fluentConfiguration = Fluently.Configure(NHibernate.Cfg.Configuration().Configure()) 
     .Mappings(m => 
      m.FluentMappings 
      .AddFromAssemblyOf<OrderMap>() 
      .Conventions.AddFromAssemblyOf<PascalCaseColumnNameConvention>()) 
      .ProxyFactoryFactory("NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate"); 

var config = fluentConfiguration.BuildConfiguration(); 

foreach(PersistentClass persistentClass in config.ClassMappings) 
{ 
    persistentClass.DynamicUpdate = true; 
} 

var sessionFactory = config.BuildSessionFactory(); 
+0

你讀我的心,我使用功能NHibernate一樣,所以這個完美的作品。 – Tejo

+0

這個方法也適用於普通的vanilla NHibernate,因爲它修改了'Configuration'。另一個更流利的NHibernate類型選項將是創建一個IClassConvention。 –

2

當使用映射,通過編碼其像這樣簡單: -

var mapper = new ModelMapper(); 

mapper.BeforeMapClass += (mi, t, map) => 
    { 
     map.DynamicUpdate(true); 
     map.DynamicInsert(true); 
    }; 

... 

只要確保你刪除它從所有的類通過類映射,因爲它們將覆蓋這個約定。

剛剛完成,如果你想覆蓋類的定義,那麼你也可以使用

mapper.AfterMapClass += (mi, t, map) => { ... } 
+0

這個工作,但我使用流利NHibertnate,所以@科爾-W答案更適合一點。 – Tejo

+1

不用擔心,在您的原始文章中添加了標籤'Fluent-NHibernate'。 – Rippo

相關問題