Может ли несколько классов совместно использовать одну таблицу БД в ActiveRecord / NHibernate - PullRequest
0 голосов
/ 23 марта 2011

C # w / Castle ActiveRecord

У меня есть два (или более) класса в C #, которые я хотел бы взаимодействовать с одной и той же таблицей базы данных.Эти два класса НЕ разделяют базовый класс, поэтому я не могу использовать дискриминатор.Я просто хотел бы разделить столбцы таблицы на два (или более) класса.Вид противоположности цели атрибута JoinedTable.Можно ли это сделать?

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Чтобы расширить мой комментарий, вы можете логически сгруппировать столбцы в активном объекте записи, унаследовав несколько интерфейсов ...

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; }
}
1 голос
/ 23 марта 2011

Существует две стратегии для отображения нескольких классов на одну таблицу:

Наследование : да, я знаю, что у вас его нет, но вы также можете использовать интерфейс в качестве "базового класса". Нет смысла иметь несколько (корневых) классов в одной таблице, которые не имеют ничего общего.

Компоненты : фактическая противоположность объединения. Вы можете поместить части таблицы в отдельные классы. В этом случае существует только одна корневая сущность, которая объединяет другие классы.

...