je la structure du projet de solution suivante:NHibernate Inscrit subclass dans les assemblées séparées
Application.Core.Entities
Application.Xtend.CustomerName.Entities
Dans le projet de base, j'ai une entité Client defiend. Dans le projet XTend, j'ai une entité définie que les sous-classes Client nommé xCustomer (faute d'un meilleur nom en ce moment ...).
L'idée ici est que nous avons un modèle de domaine Core dans notre application. Un client peut ensuite créer un nouvel assemblage contenant des extensions de notre modèle de base. Lorsque l'assembly d'extension est présent, une classe intelligente IRepository renvoie une sous-classe de la classe principale à la place.
Je tente de mapper cette relation dans NHibernate. En utilisant Fluent NHibernate j'ai pu générer cette cartographie:
<?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>
Mais NHib jette l'erreur suivante:
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'..
Ce qui fait xCustomer sens n'est pas défini dans la bibliothèque de base.
Est-il possible de répartir différents assemblages comme celui-ci? Est-ce que j'approche le problème?