我有以下解决方案项目结构:
应用程序核心实体
Application.Xtend.CustomerName.Entities
在核心项目中,我有一个实体客户拒绝。在 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”中加载类型“Application.Entites.xCustomer”,版本 = 1.0 .0.0,文化=中性,PublicKeyToken=null'..
这很有意义 xCustomer 没有在核心库中定义。
是否可以像这样跨越不同的程序集?我是不是错误地解决了这个问题?