0
我有以下類實體框架代碼的第一個關係和導航屬性?
public class Subject{
public int SubjectId { get; set; }
public String SubjectName { get; set; }
public String SubjectCategory { get; set; }
}
public class QuestionDescriptor {
public int QuestionDescriptorId { get; set; }
public String QuestionText { get; set; }
public String Answer { get; set; }
public int SubjectId { get; set; }
public virtual Subject Subject { get; set; }
}
我曾嘗試使用下面的代碼配置的話,我想,一個主題可以有很多QuestionDescriptors
modelBuilder.Entity<QuestionDescriptor>()
.HasRequired(qd => qd.Subject)
.WithMany()
.HasForeignKey(qd => qd.SubjectId)
.WillCascadeOnDelete(true);
現在我有以下問題
- 我做得對嗎?
- 我是否需要Subject類中的導航屬性?
如果我這樣做
public class Subject { public int SubjectId { get; set; } public String SubjectName { get; set; } public String SubjectCategory { get; set; } public int QuestionDescriptorId {get;set;} public virtual QuestionDescriptor {get;set;} }
,如果我做了以上我需要在配置和爲什麼什麼樣的變化happems?
- 如果我想要屬於某個特定主題的所有問題,那麼我可以通過查詢QuestionDescriptor來獲取它們,爲什麼我需要一個雙向屬性?
在3問題,如果我只是一個導航屬性,不會改變我的數據庫中的表結構? –
@ashutoshraina:在你使用'public virtual QuestionDescriptor'的問題的例子中,是的,它會改變表結構,因爲它是一對一的關係。在我使用'public virtual ICollection Descriptors'的例子中,它不改變數據庫,因爲關係仍然是一樣的(一對多)。 –
Slauma
是的,你是對的。我試了一下,數據庫結構沒有改變,它使我的查詢變得簡單明瞭。非常感謝您的幫助。 –