2013-10-21 53 views
1

我目前正在與實體框架的工作,目前我無法瞭解如何做到這一點: 我有一個叫問題類,像這樣:每個用戶的不同實體?

public class Question 
{ 
public int QuestionID { get; set; } 
public string Name { get; set; } 
public int? Value { get; set; } 
} 

每個用戶看起來是這樣的:

public class User 
{ 
public int UserID { get; set; } 
public string Name { get; set; } 
public virtual ICollection<Question> Questions { get; set; } 
} 

每個用戶都可以(也將會)回答未知數量的問題,但我怎樣才能爲每個用戶分離答案?目前,EF似乎在Queystion Table中包含了一個外鍵,這實際上並不是我想要的。 也許我缺乏這個問題的理解和/或術語,所以我將不勝感激鏈接到好建議;)

+0

那麼,答案自由形式,多選或兩者的混合?例如對於一個問題有沒有正確的答案? – Romoku

+0

@Romoku答案將存儲在問題的「值」部分。說明等存儲在Question類中,但爲了簡潔起見,我在此省略。 –

+2

問題和用戶之間存在多對多的關係,因此將問題存儲在問題中將不起作用。試着讓一個類來存儲答案,比如'public class UserQuestionAnswer {public int QuestionID {get;組; } public int UserID {get;組; } public int?價值{get;組; }}'並從'User'中刪除集合。 – Romoku

回答

1

看起來您的QuestionUser之間存在多對多關係。

創建一個新類以表達此關係,並保留用戶選擇並從User中刪除Questions屬性。

public class UserQuestionAnswer 
{ 
    public int QuestionID { get; set; } 
    public int UserID { get; set; } 
    public int? Value { get; set; } 
} 

對於實體框架的具體設置請參閱:Defining many to many relation in code first entity framework

1

您可以有一個類QuestionUser將有用戶和問題,如名稱所述。然後,您可以選擇用戶提出的問題,或查看向每個用戶提出的問題等。 通過此功能可以避免兩個類之間的顯式連接。

編輯:

那麼你有正確答案的問題:

public class Question 
{ 
public int QuestionID { get; set; } 
public string Name { get; set; } 
public int? Value { get; set; } 
public string CorrectAnswer { get; set; } 
} 

用戶:

public class User 
{ 
public int UserID { get; set; } 
public string Name { get; set; } 
} 

的userQuestion類,使鏈接,並讓用戶回答:

public class UserQuestion 
{ 
public User User { get; set; } 
public Question Question { get; set; } 
public string userAnswer { get; set; } 
} 

與這個模型,你會得到你想要的,我想。

+0

據我所知,這些問題仍然只有一行,因此我無法爲每個用戶存儲答案? –

+0

以及你可以找到這些問題,如:'問題在用戶user.id = userX.id'(這只是一個僞代碼)。並且當用戶回答一個問題時,你可以在問題用戶表中保存問題和用戶,這樣你就可以擁有歷史記錄了。 – Alexandre

+0

我已編輯我的答案。 – Alexandre

相關問題