您好我正在使用n-hibernate在MVC中开发应用程序 该应用程序是AskQuestion论坛,在第一页上显示问题列表,点击这些问题打开另一个页面,显示问题的答案。 这是我的表结构: 问题表:
QuestionID int
Question nvarchar(255)
Created_Date datetime
Modified_Date datetime
Created_By int
Modified_By int
Deleted nchar(1)
答案表:
AnswerId int
Answer nvarchar(255)
Created_Date datetime
Modified_Date datetime
Created_By int
Modified_By int
QuestionID int
Deleted nchar(1)
现在我想在它们之间创建一个映射,以便Question表中的primarykey QuestionID成为使用Mapping类(XML文件)的Answer表中的外键 请有人帮帮我......
答案 0 :(得分:0)
以下是一些可以帮助您的代码。 我已经写过类和每个类的映射。 我只定义了itemsys QuestionID和AnswerID。 在Question类中,您现在有一个ISet,它包含所有引用的Answers。 在Answer类中,您有一个Questionfield,其中包含引用的Question。
希望这就是你想要的(示例代码在C#中)
问题类
public class Question
{
//other fields
private int _id;
private ISet<Answer> _answers;
//other props
public virtual int ID
{
get{ return _id; }
set{ _id = value; }
}
public virtual ISet<Answer> Answers
{
get
{
return _answers;
}
set
{
_answers = value;
}
}
}
问题的映射
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="App.Question, App" table="question">
<id name="ID" column="questionid" type="int">
<generator class="native" />
</id>
<!--Other Propertys-->
<set name="Answers" table="answer" generic="true" inverse="true">
<key column="questionId" />
<one-to-many class="App.Answer, App"/>
</set>
</class>
</hibernate-mapping>
答案类
public class Answer
{
//other fields
private int _id;
private Question _question;
//other props
public virtual int ID
{
get{ return _id; }
set{ _id = value; }
}
public virtual Question Question
{
get
{
return _question;
}
set
{
_question = value;
}
}
}
答案的映射
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="App.Answer, App" table="answer">
<id name="ID" column="answerid" type="int">
<generator class="native" />
</id>
<!--Other Propertys-->
<many-to-one name="Question" column="questionId" class="App.Question, App"/>
</class>
</hibernate-mapping>