2011-09-09 38 views
1

我知道其他人已發佈關於此,但我找不到一個似乎與我的問題相匹配的答案。雖然我對.net超新,所以我可能只是不明白。.net mvc實體的週期性參考問題

我的網站有一個項目對象,它由一個特定用戶擁有。該項目有其他用戶可以添加的額外信息的另一個模型。

我的模型是這樣的:

項目

  • 項目業主FK
  • 其他的東西

信息

  • 項目FK
  • 信息所有者FK
  • 其他的東西

但是我得到錯誤的引用關係將導致不允許循環引用。

我覺得很沮喪,我對項目和信息中的用戶都有fk。但用戶不同,所以我不能擺脫一個。有沒有辦法告訴它?

同樣,我是.net的新手,所以我希望這不是一個愚蠢的問題。如果這有助於解釋,我來自django背景。

代碼:

public class Information 
{ 

    [HiddenInput(DisplayValue = false)] 
    public int InfoID { get; set; } 

    //user 
    public virtual User User { get; set; } 
    [Required(ErrorMessage = "This field is required.")] 
    public int UserID { get; set; } 

    //project 
    public virtual Project Project { get; set; } 
    [Required(ErrorMessage = "This field is required.")] 
    public int ProjectID { get; set; } 

} 

public class Project 
{ 
    [HiddenInput(DisplayValue = false)] 
    public int ProjectID { get; set; } 

    //user 
    public virtual User User { get; set; } 
    [Required(ErrorMessage = "This field is required.")] 
    public int UserID { get; set; } 

} 

我刪除了所有其他非關係領域,因爲這些都不是很重要的。

+0

你能代碼發佈到你的項目和信息類映射,並指定爲atleast一個關係?你是先使用實體​​框架設計器還是代碼? – BZink

+0

首先使用實體​​和代碼,是的。 – lovefaithswing

回答

5

UserID對於兩個實體都是必需的,對於Information實體需要ProjectID。如果您刪除User,這將創建多個級聯路徑。 User - >InformationUser - >Project - >Information

你要的關係用流利的API,WillCascadeOnDelete(false)

public class MyContext : DbContext 
{ 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<User>() 
        .HasMany(u => u.Informations) 
        .HasRequired(i => i.User) 
        .HasForeignKey(i => i.UserID) 
        .WillCascadeOnDelete(false); 
    } 
}