NHibernate映射错误 - 无效的子元素'多对一'

时间:2009-12-08 16:04:14

标签: 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 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'

我需要做些什么才能使其成为有效的映射?

1 个答案:

答案 0 :(得分:1)

问题证明不是这些域类。我在同一个程序集中有一个Repository类,Fluent NHibernate显然试图在域中包含它。试图映射此类导致错误(不幸的是错误消息没有说明哪种类型导致了问题)。

我通过在命名空间上添加where约束来修复它。