2009-02-25 57 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的意义在于创建一种写入映射文件的强类型方式 - 就是这样。

你的字典不会改善任何东西,你不需要重写字典中的数据吗? (或者我误解了一些东西。)