2010-10-01 167 views
0

問題:我通過屬性具有下面的nHibernate映射。Nhibernate類映射

現在我想創建帶有動態表前綴的T_lsDomains。 如TBL_lsDomains或只是lsDomains。

有什麼辦法可以做到這一點與屬性? 由於它們是在編譯時定義的,並且必須是常量?

有沒有辦法做到這一點?

還是可以流利的NHibernate做到這一點?

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace nhDBapi.Tables 
{ 

    [NHibernate.Mapping.Attributes.Class(Name = "nhDBapi.Tables.clsDomains, nhDBapi", Table = "T_lsDomains")] 
    public class clsDomains 
    { 
     void clsDOmains() 
     { 
     } 


     [NHibernate.Mapping.Attributes.Id(Name = "DomainID", Column = "DM_DomainID", TypeType = typeof(string))] 
     public string DomainID = "abc"; // nvarchar(100) NULL DEFAULT (''), 

     [NHibernate.Mapping.Attributes.Property(Name = "DomainName", Column = "DM_DomainName", Type = "String", Length = 100)] 
     string DomainName = ""; // nvarchar(100) NULL DEFAULT (''), 

     [NHibernate.Mapping.Attributes.Property(Name = "Description", Column = "DM_Description", Type = "String", Length = 100)] 
     string Description = ""; // nvarchar(100) NULL DEFAULT (''), 
    } 
} 
+0

請註明什麼T_lsDomains指,和正是你想要創建 – devio 2010-10-01 17:52:24

+0

T_lsDomains什麼是數據庫表。我想創建一個具有動態名稱的表格。 – 2010-10-01 19:42:54

回答

2

可以使用輕鬆實現這個Fluent NHibernate convention

public class TableNameConvention : IClassConvention 
{ 
    public bool Accept(IClassMap classMap) 
    { 
    return true; // apply to all mappings 
    } 

    public void Apply(IClassMap classMap) 
    { 
    // will produce table names like: TBL_Customer, TBL_Product 
    classMap.WithTable("TBL_" + classMap.EntityType.Name); 
    } 
}