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赞赏。
答案 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类型的虚拟属性才能使用此映射。