2012-03-22 3 views
0

Привет, я разрабатываю приложение в MVC с помощью n-hibernate Приложение является форумом AskQuestion, где на первой странице приведен список вопросов отображаются и по щелчку этих вопросов еще одна страница открывается, которая показывает ответы на вопрос .. Это мой стол Структура: вопрос Таблица:Сделать первичный ключ в одном классе как внешний ключ в другом классе, используя файл сопоставления nhibernate

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) 

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

ответ

0

Вот некоторые, что может код могу помочь тебе. Я написал классы и сопоставление для каждого из них. Я только определил свойства QuestionID и AnswerID. В классе вопросов у вас есть 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; 
      } 
     } 
    } 

Mapping для Вопроса

<?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; 
      } 
     } 
    } 

Mapping для ответа

<?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> 
+0

эй, во-первых спасибо 4 такой большой код ... и забираю столько efforts..Can сказать, у меня Hw, чтобы получить доступ к корочки обоих классов Коз, что проблема я столкнулся с моим текущим кодом .. где мне приходилось запускать запрос для сравнения значений, содержащихся в обоих столбцах. – user1274646

+0

Хорошо, надеюсь, я понимаю, что вы сейчас правы. Немного Пример у вас есть объект вопроса. (Для примера session.CreateCriteraia (typeof (Question)). Добавить (новое выражение EqExpression («ID», 1)) ... Теперь вы можете получить доступ к ответам на вопрос «Ответы свойства». Hibernate автоматически находит правильные ответы Если вы правильно сопоставили два Класса. –

+0

Можете ли вы пропустить следующую ссылку http://stackoverflow.com/questions/9792086/to-insert-a-value-in-foreign-key-in-mvc3-nihibernate и проверить, что я сделал правильно или нет, а затем plzzz также скажите мне, где я должен поставить вышеприведенный код, как в функции Nhibernate Helper класс – user1274646

Смежные вопросы