2010-03-26 41 views
2

我是一個n00b。這是我想要做的:FluentMapping自動翻拍功能對我來說似乎不太適用

使用AutoMapping配置模型 - >表之間的每個屬性。然後我想在流利的地圖中覆蓋2個特定的項目。這兩個項目是:Id &表名稱。

所以,我的地圖看起來就像這樣:

public class BillMasterMap : ClassMap<BillMaster> 
{ 
    public BillMasterMap() 
    { 
     Table("BILLMAST"); 
     Id(x => x.SYSKEY); 
    } 
} 

而且我出廠設置是這樣的:

public static ISessionFactory SessionFactory(string connectionString) 
    { 
     if (_sessionFactory == null) 
     { 
      _sessionFactory = Fluently.Configure() 
       .Database(MsSqlConfiguration.MsSql2005.ShowSql() 
         .ConnectionString(c => c.Is(connectionString)).Cache(c => c.UseQueryCache().ProviderClass<HashtableCacheProvider>())) 
       .Mappings(m => 
        m.AutoMappings.Add(AutoMap.AssemblyOf<BillMaster>() 
           .Where(x => x.Namespace.EndsWith("Entities")))) 
       .Mappings(m => 
        m.FluentMappings.AddFromAssemblyOf<BillInvoiceMap>()) 
       .BuildSessionFactory(); 
     } 

     return _sessionFactory; 
    } 

的問題是,FNH找到ID覆蓋了BillMaster,而不是BillInvoice這看起來像這樣(看起來相同)

public class BillInvoiceMap : ClassMap<BillInvoice> 
{ 
    public BillInvoiceMap() 
    { 
     Id(x => x.SYSKEY); 
     Table("BILLINV"); 
    } 
} 

我已經解決了這個問題,通過配置(如下圖)我的設置自動映射:

.Mappings(m => 
        m.AutoMappings.Add(AutoMap.AssemblyOf<BillMaster>() 
           .Setup(s => s.FindIdentity = property => property.Name == "SYSKEY")    
           .Where(x => x.Namespace.EndsWith("Entities")))) 

但我想其他的表格不使用「SYSKEY」作爲自己的標識柱結合汽車&流暢。

想法?這是一個FNH錯誤嗎?

回答

0

得到它的工作。

1)我有與我上面 2.)所述的安裝方法,安裝程序自動映射此外,我必須與標識方法

設置fluentmappings當兩個都是這樣設置,那麼它爲我工作。

所以

public static ISessionFactory SessionFactory(string connectionString) 
    { 
     if (_sessionFactory == null) 
     { 
      _sessionFactory = Fluently.Configure() 
       .Database(MsSqlConfiguration.MsSql2005.ShowSql() 
           .ConnectionString(c => c.Is(connectionString)).Cache(
           c => c.UseQueryCache().ProviderClass<HashtableCacheProvider>())) 
       .Mappings(m => 
           { 
            m.FluentMappings.AddFromAssemblyOf<BaseEntity>(); 
            m.AutoMappings.Add(AutoMap.AssemblyOf<BaseEntity>() 
                 .Setup(s => s.FindIdentity = property => property.Name == "SYSKEY") 
                 .Where(x => x.Namespace.EndsWith("Entities"))); 

           }) 
       .BuildSessionFactory(); 
     } 

     return _sessionFactory; 
    } 

和地圖

public class BillInvoiceMap : ClassMap<BillInvoice> 
{ 
    public BillInvoiceMap() 
    { 
     Table("BILLINV"); 
     Id(x => x.SYSKEY); 
    } 
}