Ich habe folgende Lösung Projektstruktur:NHibernate beigetreten Subclass in separaten Baugruppen
Application.Core.Entities
Application.Xtend.CustomerName.Entities
Im Kern Projekt, das ich eine Entität Kunden defiend haben. Im XTend-Projekt habe ich eine Entität definiert, die die Unterklassen Customer mit dem Namen xCustomer (mangels eines besseren Namens zu diesem Zeitpunkt ...) definiert.
Die Idee hier ist, dass wir ein Core-Domain-Modell in unserer Anwendung haben. Ein Kunde kann dann eine neue Assembly erstellen, die Erweiterungen für unser Kernmodell enthält. Wenn die Erweiterungsbaugruppe vorhanden ist, gibt eine intelligente Klasse IRepository stattdessen eine Unterklasse der Hauptklasse zurück.
Ich versuche, diese Beziehung in NHibernate abzubilden. Mit Fluent NHibernate konnte ich diese Zuordnung generieren:
<?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>
Aber NHib führt den folgenden Fehler:
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'..
Welchen Sinn xCustomer macht, ist nicht in der Core-Bibliothek definiert.
Ist es möglich, verschiedene Baugruppen so zu überspannen? Komme ich das Problem falsch an?