0

例子:

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 的链接,我很乐意听到它;)。

4

1 回答 1

0

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

这个类映射是限制性的,因为在我的其他一些项目中,表格看起来完全不同。

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

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

于 2009-02-28T08:05:06.987 回答