在桌子上的CRUD与nhibernate中的未知列

时间:2009-02-25 13:48:11

标签: c# fluent-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的链接爱听到它;)。

1 个答案:

答案 0 :(得分:0)

我认为没有,你应该创建一个新的映射。

  

此类映射是限制性的   因为桌子看起来完全   在我的其他一些不同   项目

嗯,这是另一个项目,另一个映射。 fluentNH的要点是创建一种强类型的编写映射文件的方式 - 就是这样。

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