.net mvc与实体的周期性参考问题

lov*_*ing 1 .net entity-framework asp.net-mvc-3

我知道其他人已经发布了这个,但我找不到一个似乎与我的问题相符的答案.虽然我是.net的新手,所以我可能只是不明白.

我的网站有一个项目对象,由特定用户拥有.该项目还有其他用户可以添加的额外信息模型.

我的模型如下:

项目

  • 项目业主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; }

}
Run Code Online (Sandbox Code Playgroud)

我删除了所有其他非关系字段,因为这些字段并不重要.

Era*_*nga 5

UserID两个实体ProjectID都需要,并且是实体所必需的Information.如果删除a,这将创建多个级联路径User.User- > InformationUser- > Project- > Information.

您必须使用Fluent 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);
    }
}
Run Code Online (Sandbox Code Playgroud)