I имеет следующую структуру проекта решения:NHibernate Регистрация Подкласса в отдельных сборках
Application.Core.Entities
Application.Xtend.CustomerName.Entities
В Основном проекте у меня есть юридическое лицо Клиентов defiend. В проекте XTend у меня есть сущность, определяющая, что подклассы Customer с именем xCustomer (из-за отсутствия лучшего имени в это время ...).
Идея здесь в том, что у нас есть модель ядра в нашем приложении. Затем клиент может создать новую сборку, содержащую расширения нашей основной модели. Когда узел расширения присутствует, класс smart IRepository вернет подкласс основного класса.
Я пытаюсь сопоставить это отношение в NHibernate. Использование Fluent NHibernate я был в состоянии произвести это отображение:
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
default-lazy="false"
assembly="NHibernate.Core.Entites"
namespace="NHibernate.Entites"
default-access="field.camelcase-underscore">
<!-- Customer is located in assembly Application.Core.Entities -->
<class name="Customer" table="Customers" xmlns="urn:nhibernate-mapping-2.2">
<id name="Id" column="Id" type="Int64">
<generator class="native" />
</id>
<component name="Name" insert="true" update="true">
<property name="LastName" column="LastName" length="255" type="String" not-null="true">
<column name="LastName" />
</property>
<property name="FirstName" column="FirstName" length="255" type="String" not-null="true">
<column name="FirstName" />
</property>
</component>
<!-- xCustomer is located in assembly Application.XTend.CustomerName.Entities -->
<joined-subclass name="xCustomer" table="xCustomer">
<key column="CustomerId" />
<property name="CustomerType" column="CustomerType" length="255" type="String" not-null="true">
<column name="CustomerType" />
</property>
</joined-subclass>
</class>
</hibernate-mapping>
Но NHib выдает следующее сообщение об ошибке:
NHibernate.MappingException: persistent class Application.Entites.xCustomer, Application.Core.Entites not found ---> System.TypeLoadException: Could not load type 'Application.Entites.xCustomer' from assembly 'Application.Core.Entites, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'..
который имеет смысл xCustomer не определен в библиотеке Core.
Возможно ли охватывать различные сборки следующим образом? Я неправильно подхожу к проблеме?