我正在使用 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>
当我运行映射时,假设它试图将表单代码放入问题的 ID 中,我得到一个标识符类型不匹配。不幸的是,我无法更改表格的结构,我不知道如何映射它,任何帮助将不胜感激。