Чтобы сделать первичный ключ в одном классе как внешний ключ в другом классе, используя файл сопоставления nhibernate - PullRequest
0 голосов
/ 22 марта 2012

Привет, я разрабатываю приложение в MVC, используя n-hibernate. Приложение представляет собой форум 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)

Теперь Я хочу создать сопоставление между ними, чтобы первичный ключ QuestionID в таблице Вопросов становился внешним ключом в таблице Ответов с использованием класса Mapping (XML-файл) Пожалуйста, кто-нибудь, помогите мне ...

1 Ответ

0 голосов
/ 22 марта 2012

Вот код, который может вам помочь.Я написал для классов и картирование для каждого.Я определил только свойства QuestionID и AnswerID.В классе Question у вас теперь есть ISet, который содержит все упомянутые ответы.В классе «Ответ» у вас есть поле «Вопрос», в котором содержится указанный вопрос.

Надеюсь, что именно этого вы и хотите (пример кода на 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>
...