使用Fluent NHibernate进行自动化,我试图映射以下域:
public class Company: IModel
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
public class Account: IModel
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Company Company { get; set; }
}
一家公司可以拥有多个帐户。一般情况下,我会直接获得一个帐户,然后偶尔想找到相关公司,因此不需要公司模型上的帐户列表。
Fluent NHibernate创建以下hbms:
公司
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="property" auto-import="true" default-cascade="none" default-lazy="true">
<class xmlns="urn:nhibernate-mapping-2.2" name="DataModel.Company, DataModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="`Company`">
<id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Id" />
<generator class="identity" />
</id>
<property name="Name" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Name" />
</property>
</class>
</hibernate-mapping>
帐户
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="property" auto-import="true" default-cascade="none" default-lazy="true">
<class xmlns="urn:nhibernate-mapping-2.2" name="DataModel.Account, DataModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="`Account`">
<id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Id" />
<generator class="identity" />
</id>
<property name="Name" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Name" />
</property>
<many-to-one class="DataModel.Company, DataModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="Company">
<column name="Company_id" />
</many-to-one>
</class>
</hibernate-mapping>
我收到以下错误:
命名空间中的元素“class” 'urn:nhibernate-mapping-2.2'有 无效的子元素'多对一' 命名空间 '瓮:NHibernate的映射-2.2'。清单 可能的元素:'meta, subselect,cache,synchronize, 评论,tuplizer,id,composite-id' 在命名空间 '瓮:NHibernate的映射-2.2'
我需要做些什么才能使其成为有效的映射?
答案 0 :(得分:1)
问题证明不是这些域类。我在同一个程序集中有一个Repository类,Fluent NHibernate显然试图在域中包含它。试图映射此类导致错误(不幸的是错误消息没有说明哪种类型导致了问题)。
我通过在命名空间上添加where
约束来修复它。