2009-02-25 61 views
0

例子:CRUD與未知列的表中NHibernate的

public class ContactMap : ClassMap<Contact> 
{ 
    public ContactMap() 
    { 
     WithTable("ida_contact"); 
     Id(x => x.ID, "ida_contact_id").WithUnsavedValue(0).GeneratedBy.UuidHex(""); 
     Map(x => x.FirstName); 
     Map(x => x.Surname); 
     Map(x => x.Address1, "dm_address_1"); 
     Map(x => x.Address2, "dm_address_2"); 
     Map(x => x.Address3, "dm_address_3"); 
     Map(x => x.Postcode, "dm_postcode"); 
     Map(x => x.City, "dm_city"); 
     Map(x => x.CountryCode, "dm_countrycode"); 
     Map(x => x.PhoneMobile, "phone_mobile"); 
     Map(x => x.PhoneHome, "phone_home"); 
     Map(x => x.Email); 
     Map(x => x.DOB); 
     Map(x => x.SMSAccept, "sms_accept"); 
     Map(x => x.EmailAccept, "email_accept"); 
     Map(x => x.UserName); 
     Map(x => x.Password); 
    } 
} 

該類映射是限制性的表會看在我的一些其他項目的完全不同。

我傾向於做的是映射一個字典,其中字典中的每個元素表示一個表中的列,這樣在數據庫中添加列時它將是100%動態的,我只需要如果我正在與不同的系統進行集成,則更新映射文件與要使用哪個表。 這也需要一個包含元數據的表來提供類型和驗證信息,以滿足我的域的需求。

有沒有辦法在fluent-nhibernate中做這種映射? 的

public class ContactMap : ClassMap<IDictionary<string, object>> 
{ 
    WithTable("Current_contactTable"); 
} 

一些形式我認爲解決的辦法聞起來有點壞艱難,因此,如果任何人有一個更強類型的解決方案或鏈接到一個ID喜歡聽)。

回答

0

我不認爲有,你應該創建一個新的映射。

該類映射是限制性 作爲表會看在我的一些其他項目 完全不同 。

那麼這是另一個項目,另一個映射。 fluentNH的意義在於創建一種寫入映射文件的強類型方式 - 就是這樣。

你的字典不會改善任何東西,你不需要重寫字典中的數據嗎? (或者我誤解了一些東西。)