我正在使用nhibernate映射旧数据库,并在映射关系时遇到了一些问题。使用外键映射一个到多个集合到外键
这两个类是这样
public class Questionnaire
{
public int Id {get; set;}
public string FormCode {get; set;}
public IList<Question> Questions {get; set;}
}
public class Question
{
public int Id{get; set;}
public Questionnaire Questionnaire {get;set;}
public string QuestionText{get;set;}
}
到都是这样
Questionnaire Table
Id int
FormCode varchar(100)
Question Table
Id int
FormCode varchar(100)
QuestionText varchar(max)
两个表是所述formcode列之间的关系的表。
我当前的映射是这样的
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="QDesign.Core.Models" assembly="QDesign.Core">
<class name="Questionnaire" table="_questionnaire_list">
<id column="Id" name="Id">
<generator class="identity"/>
</id>
<property name="FormCode" column="FormCode"/>
<bag name="Questions" >
<key foreign-key="FormCode" property-ref="FormCode" />
<one-to-many class="Question" />
</bag>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="QDesign.Core.Models" assembly="QDesign.Core">
<class name="Question" table="_questionnaire_items">
<id column="ID" name="Id" unsaved-value="-1">
<generator class="identity" />
</id>
<property name="QuestionText" column="QuestionText" />
</class>
</hibernate-mapping>
当我运行的映射,我得到一个标识符类型不匹配假设它试图把formcode进入正题的ID。不幸的是,我无法改变表格的结构,我对如何绘制这张表格感到茫然,任何帮助都将不胜感激。
谢谢你的回复。我会回到客户端,看看我能否让他们改变他们的模式。再次感谢您的回复 – pythonandchips 2009-02-08 13:37:59
请记住,您不一定必须更改模式。这可能足以告诉Hibernate PK是FormCode(即使它不是)。 – cletus 2009-02-08 13:57:57