#c# #nhibernate #fluent-nhibernate
#c# #nhibernate #свободно-nhibernate
Вопрос:
У меня есть класс объектов A и свободная NHibernate-карта для него AMap, которая отображает некоторые столбцы из таблицы базы данных (несколько полей отсутствуют). Я хотел бы создать класс B, который наследуется от A (чтобы не разрывать отношения с другими объектами), и сопоставить его, чтобы разрешить доступ к столбцам, не сопоставленным базовым классом. Проблема в том, что я не могу изменить ни одной строки кода в базовых классах (A и AMap). Есть ли какое-либо решение этой проблемы?
Ответ №1:
я не уверен, как вы хотите его использовать, но это может сделать
class B : A
{
}
class BMap : ClassMap<B>
{
public BMap()
{
Table("A's tablename");
...
}
}
тогда это должно быть возможно
someEntity.ListOfAs.Add(new B());
не знаю, есть ли проблемы в будущем, хотя
Комментарии:
1. Спасибо. Это сработало, но мне пришлось скопировать все сопоставления из AMap в BMap, но это то, что я могу сделать
Ответ №2:
Насколько я понимаю требование, это простая таблица для сопоставления иерархии классов. Для этого вам понадобится столбец дискриминатора.
Для сопоставления см. Последний пример на этой странице: Fluent Wiki.
Комментарии:
1. Проблема в другом, и таблица для иерархии классов здесь не будет работать.