多个类可以在ActiveRecord / NHibernate中共享一个db表

时间:2011-03-23 08:31:57

标签: c# activerecord c#-4.0 castle-activerecord

C#w / Castle ActiveRecord

我在C#中有两个(或更多)类,我想与同一个数据库表进行交互。这两个类不共享基类,所以我不能使用Discriminator。我只想将表列分成两个(或更多)类。与JoinedTable属性的目的相反的种类。可以这样做吗?

2 个答案:

答案 0 :(得分:1)

将几个类映射到一个表有两种策略:

继承:是的,我知道你没有它,但你也可以使用一个接口作为“基类”。在同一个表中有几个(根)类没有任何共同点是没有意义的。

组件:与join的实际相反。您可以将表的一部分放在单独的类中。在这种情况下,只有一个根实体聚合其他类。

答案 1 :(得分:1)

要扩展我的注释,您可以通过继承多个接口来逻辑地将活动记录对象中的列分组...

interface IPerson
{
    string FirstName { get; set; }
    string LastName { get; set; }
}

interface IAddress
{
    string AddressLine1 { get; set; }
    string AddressLine2 { get; set; }
    string City { get; set; }
    string Province { get; set; }
    string Country { get; set; }
}

class CustomerRecord : IPerson, IAddress // ActiveRecord object map to table...
{  
    // IPerson members...
    public string FirstName { get; set; }
    public string LastName { get; set; }

    // IAddress members...
    public string AddressLine1 { get; set; }
    public string AddressLine2 { get; set; }
    public string City { get; set; }
    public string Province { get; set; }
    public string Country { get; set; }
}