NHibernate映射困境 - “未知实体类:System.Int64”

时间:2009-01-25 07:54:16

标签: nhibernate

NHibernate正在推动我'坚果'!!!

我有以下映射。 当我尝试将记录添加到数据库时,会返回此错误。 “未知的实体类:System.Int64”

 <class name="CalConnector" table="tb_calConnectors" lazy="false" >
<id name="id" column="id">
  <generator class="hilo"/>
</id>
<many-to-one name="calendarID" class="Calendar" lazy="false" cascade="save-update">
  <column name="calendarID" sql-type="bigint" not-null="false"/>
</many-to-one>

我将映射设置为这样,所以当我使用映射文件生成模式时,会设置此外键; CONSTRAINT [FK94A85A28236EBB2B] FOREIGN KEY ([calendarID]) REFERENCES [dbo].[tb_calendars] ([id])

我生成了架构,一切都很棒。 现在,当我尝试添加一个CalConnector并引用现有的calendarID时 我收到一个错误。 如果我拿出多对一的关系; 即:

<property name="calendarID"/>

我可以创建记录但是当NHibernate生成模式时,不设置外键。

我只花了几个小时来设置一些简单的CRUD东西。我希望NHibernate会为我做出正确的回报给予我一些回报。

如果有人能发现问题,请给我一个提示,然后我就可以完成这项任务并获得应得的啤酒。 任何帮助很多* 2赞赏。

1 个答案:

答案 0 :(得分:1)

我不建议您将calendarId作为多对多标记中的名称,name属性必须是包含日历的属性的名称,即name =“Calendar”。另一部分似乎没问题,但我不认为指定sql-type有帮助,这可以防止数据库滥用,因为会覆盖hbm2ddl类型的变形。所以你可以尝试以下映射:

<class name="CalConnector" table="tb_calConnectors" lazy="false" >
  <id name="id" column="id">
    <generator class="hilo"/>
  </id>
  <many-to-one name="Calendar" class="Calendar" lazy="false" cascade="save-update" column="calendarId" not-null="false" />
</class>

请记住,CalConnector必须具有名为Calendar的Calendar类型的虚拟属性才能使用此映射。