C# NHibernate映射错误-无效的子元素';多对一';
使用Fluent NHibernate和自动映射,我尝试映射以下域:C# NHibernate映射错误-无效的子元素';多对一';,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,使用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
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”已
中的子元素“多对一”无效
名称空间
“urn:nhibernate-mapping-2.2”。名单
预期的可能因素:,
子选择、缓存、同步、,
注释,元组化程序,id,复合id'
在命名空间中
“urn:nhibernate-mapping-2.2”
我需要做什么才能使这成为一个有效的映射?问题不在于这些域类。我在同一个程序集中有一个Repository类,Fluent NHibernate显然试图将其包含在域中。导致错误的是试图映射该类(不幸的是,错误消息没有说明是哪种类型导致了问题) 我通过在名称空间上添加
where
约束来修复它