Я использую два класса NiceCustomer
& RoughCustomer
какой implment интерфейс ICustomer
.
ICustomer
имеет четыре свойства. Они:
Property Id() As Integer
Property Name() As String
Property IsNiceCustomer() As Boolean
ReadOnly Property AddressFullText() As String
Я не знаю, как отобразить интерфейс ICustomer
, к базе данных.
Я получаю ошибку как это во внутреннем исключении.
Ассоциация обращается к неотображенному классу: ICustomer
Я использую Быстрый и NHibernate.
Невозможно отобразить интерфейс в nhibernate. Если ваша цель - иметь возможность выполнять запросы с использованием общего типа для получения обоих типов клиентов, вы можете использовать полиморфный запрос. Просто пусть оба ваших класса реализуют интерфейс и обычно сопоставляют классы. См. Эту ссылку:
https://www.hibernate.org/hib_docs/nhibernate/html/queryhql.html (раздел 11.6)
как вы спрашиваете? Если вы используете HQL, вам нужно импортировать пространство имен интерфейса с файлом HBM с помощью этой строки:
<import class="name.space.ICustomer, Customers" />
Если вы используете Criteria, вы должны просто иметь возможность запросить ICustomer, и он вернет оба типа клиентов.
Если вы отображаете класс, в котором есть клиент, через HasMany, HasManyToMany или ссылки, тогда вам нужно использовать общую форму:
References<NiceCustomer>(f=>f.Customer)
Если вы хотите, чтобы он справлялся с любым из них, вам необходимо сделайте их подклассами
Subclassmap<NiceCustomer>
В этом случае, я думаю, вам понадобится базовый класс Customer и используйте его для параметра универсального типа во внешнем классе:
References<Customer>(f=>f.Customer)
Тем не менее, вы не должны изменять модель своей предметной области, чтобы справиться с этим, у него все еще должен быть ICustomer во внешнем классе.
Я не уверен, есть ли в 1.0RTM универсальная форма, работающая для ссылок, но быстрое сканирование изменений должно показать изменение, которое, как мне кажется, представляет собой добавление в две строки.