繁体   English   中英

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

[英]NHibernate mapping error - invalid child element 'many-to-one'

将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; }
}

一个公司可以有多个帐户。 通常,我将直接获得一个帐户,然后偶尔要查找关联的公司,因此不需要公司模型上的帐户列表。

流利的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>

我收到以下错误:

名称空间“ urn:nhibernate-mapping-2.2”中的元素“ class”在名称空间“ urn:nhibernate-mapping-2.2”中具有无效的子元素“多对一”。 预期的可能元素列表:名称空间“ urn:nhibernate-mapping-2.2”中的“元,子选择,缓存,同步,注释,tuplizer,id,复合ID”。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM