示例:
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 :(得分:0)
我认为没有,你应该创建一个新的映射。
此类映射是限制性的 因为桌子看起来完全 在我的其他一些不同 项目
嗯,这是另一个项目,另一个映射。 fluentNH的要点是创建一种强类型的编写映射文件的方式 - 就是这样。
你的词典不会改进任何东西,你不必重写字典中的数据吗? (或者我误解了一些东西。)