2012-03-22 62 views
0

嗨,我正在使用n-hibernate開發MVC中的應用程序 應用程序是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

下面是一些代碼,可以幫你。 我已寫入類和每個映射。 我只定義了propertys QuestionID和AnswerID。 在Question類中,您現在有一個ISet,其中包含所有參考答案。 在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> 
+0

哎首先感謝名單4這樣的大碼...和羚牛這麼多efforts..Can妳告訴我HW訪問兩個類堂妹說的ID的是我所面臨的問題與我目前的代碼..在那裏我不得不啓動一個查詢來比較列中包含的值 – user1274646 2012-03-22 12:24:28

+0

好的,我希望我現在理解你。一個小例子,你有一個問題的對象。 (例如session.CreateCriteraia(typeof(Question))。Add(new EqExpression(「ID」,1))...現在你可以通過屬性'Answers'來訪問問題的答案。 。如果你已經正確映射了兩個類。 – 2012-03-22 12:28:56

+0

可以請你通過下面的鏈接http://stackoverflow.com/questions/9792086/to-insert-a-value-in-foreign-key-in-mvc3-nihibernate 並檢查是否我做了正確與否,然後plzzz也告訴我,我應該把上面的代碼放在哪裏,像在哪個函數的Nhibernate幫助類 – user1274646 2012-03-22 13:06:51

相關問題