【问题标题】:NHibernate mapping error - invalid child element 'many-to-one'NHibernate 映射错误 - 无效的子元素“多对一”
【发布时间】:2009-12-08 16:04:13
【问题描述】:

使用 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; }
}

一个公司可以有多个帐户。一般我会直接得到一个账号,然后偶尔想找一下关联的Company,所以不需要company模型上的账号列表。

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>

我收到以下错误:

命名空间中的元素“类” 'urn:nhibernate-mapping-2.2' 有 无效的子元素“多对一” 命名空间 'urn:nhibernate-mapping-2.2'。清单 预期的可能元素:'元, 子选择,缓存,同步, 评论,tuplizer,id,composite-id' 在命名空间中 'urn:nhibernate-mapping-2.2'.

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

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多