ASP.NET 5(MVC6)EF7外键可能会导致循环
这是我的模特:
public class Post { [Key] public int PostId { get; set; } [Required] [MaxLength(140)] public string Title { get; set; } [Required] public string ApplicationUserId { get; set; } public ApplicationUser ApplicationUser { get; set; } public ICollection<Comment> Comments { get; set; } } public class Comment { [Key] public int CommentId { get; set; } [Required] [StringLength(1000)] public string Text { get; set; } [Required] public int PostId { get; set; } [Required] public string ApplicationUserId { get; set; } public Post Post { get; set; } public ApplicationUser ApplicationUser { get; set; } } 我收到错误:
这正是它们在documents中展示的方式. 现在,如果我删除: [Required] public int PostId { get; set; } 并使用Fluent API如下: builder.Entity<Comment>().HasOne(p => p.Post).WithMany(c => c.Comments).IsRequired(); 我仍然得到同样的错误.如果我明确说明 builder.Entity<Comment>().HasOne(p => p.Post).WithMany(c => c.Comments).IsRequired().OnDelete(DeleteBehavior.Cascade); 我仍然得到同样的错误. 如果我使用以下内容: builder.Entity<Comment>().HasOne(p => p.Post).WithMany(c => c.Comments); 可以在没有帖子的情况下输入评论.评论必须属于帖子. 我错过了什么吗?这是一个常见的用例,与PK所需的FK的1对多关系. 解决方法
我确实错过了一些东西.我的结构是用户可以拥有帖子.帖子可以有评论.由于评论也有用户,这就是造成循环问题的原因.
删除帖子后,它会级联删除评论.这就是我们想要的. 当用户被删除时,它会将删除级联到帖子和评论.但是帖子也会尝试级联删除评论. 我使用的解决方案是删除从User到Comment的级联删除. 这可以通过以下方式完成: builder.Entity<Comment>().HasOne(c => c.ApplicationUser).WithMany(u => u.Comments).IsRequired().OnDelete(DeleteBehavior.Restrict); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 多语言网站
- Asp.net会话交叉/混合
- asp.net-mvc-3 – 如何在MVC3中为iframe的src属性提供html文
- ASP.NET Core使用NLog记录日志
- asp.net-mvc – 如何允许用户在ASP.NET MVC中创建永久链接?
- asp.net-mvc-3 – DbContext使用Ninject的InRequestScope()
- asp.net-mvc – 我可以使用MVC全局动作过滤器来禁用表单字段
- .Net Core 中使用NLog作为日志中间件
- 在ASP.Net网站项目中混合VB.Net和C#代码?
- asp.net – Request.Browser.Platform不返回iPad,OSX或Wind
- ASP.NET Core 2.2 JWT AUTH
- Asp.net“全球”变量
- asp.net-mvc – ‘System.Web.Webpages.Html.Htm
- asp.net – 如何在gridview中只显示日期而不是da
- asp.net-mvc-3 – MVC 3(Razor) – 使用Button事
- asp.net-mvc – 如何强制Razor使Editorfor输入fl
- asp.net – jQuery blackberry ajax问题
- asp.net – 在Windows Server 2012的Azure启动任
- asp.net – 联合身份验证和“加密操作期间发生错
- asp.net-mvc-4 – 无法获取MVC 4 FileExtensions