NHibernate: полностью переопределяющая сущность базового домена - PullRequest
0 голосов
/ 25 мая 2010

У меня есть ситуация, когда у меня есть Common.Domain.Person и Specific.Domain.Person.

Первый должен быть предоставлен как часть общего пакета.
Второй появляется, когда необходимо настроить общий пакет в соответствии с потребностями конкретного проекта.

В объектной модели ее легко реализовать с помощью наследования.
Однако в картировании NH я столкнулся с небольшой проблемой.

Я могу создать отображение NHibernate <subclass>, но для этого потребуется использовать дискриминатор. Тем не менее, я знаю, что если определенный класс человека был унаследован, то экземпляры общего класса никогда не будут использоваться в этом конкретном проекте.

Каков наилучший способ реализовать это, не добавляя столбец дискриминатора в базовый класс (поскольку нет различающихся случаев для распознавания)?

Ответы [ 2 ]

1 голос
/ 26 мая 2010

это то, что я хотел, и nhibernate поддерживает его с помощью сущностей XML. К сожалению, эта функция не работает с (по крайней мере) NH v2 ++.

см. Также Использование Doctype в Nhibernate

Обходным путем может быть внедрение этих свойств программным способом при создании SessionFactory (Dynamic Mapping)

см. Также http://ayende.com/Blog/archive/2008/05/01/Dynamic-Mapping-with-NHibernate.aspx

0 голосов
/ 25 мая 2010

Просто сопоставьте Specific.Domain.Person и оставьте Common.Domain.Person без отображения.

Если вы не сохраняете его экземпляры, NHibernate не должен знать об этом.

...