次のソリューション プロジェクト構造があります。
アプリケーション.コア.エンティティ
Application.Xtend.CustomerName.Entities
コア プロジェクトでは、エンティティCustomer defiend があります。XTend プロジェクトでは、xCustomer という名前の Customer をサブクラス化するエンティティを定義しています(現時点ではより適切な名前がないため...)。
ここでの考え方は、アプリケーションにコア ドメイン モデルがあるということです。その後、顧客はコア モデルの拡張機能を含む新しいアセンブリを作成できます。拡張アセンブリが存在する場合、スマート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: 永続クラス Application.Entites.xCustomer、Application.Core.Entites が見つかりません ---> System.TypeLoadException: アセンブリ 'Application.Core.Entites、Version=1.0 から型 'Application.Entites.xCustomer' を読み込めませんでした.0.0、カルチャ = ニュートラル、PublicKeyToken = null'..
xCustomer が Core ライブラリで定義されていないのは理にかなっています。
このように異なるアセンブリにまたがることは可能ですか? 私は問題に間違ってアプローチしていますか?