我知道其他人发布了这个,但我找不到与我的问题相符的答案。虽然我是.net的新手,所以我可能只是不明白。
我的网站有一个项目对象,由特定用户拥有。该项目还有其他用户可以添加的额外信息模型。
我的模特就像:
项目
信息
但我收到错误引用关系将导致不允许循环引用。
我认为我对项目和信息中的用户都有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 :(得分:5)
UserID
,ProjectID
实体需要Information
。如果您删除User
,这将创建多个级联路径。 User
- > Information
和User
- > 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);
}
}