MrM*_*afa 5 c# asp.net-mvc entity-framework
我想在 ASP.NET 4.6.1 MVC 项目中进行级联删除,
这是数据库第一个项目,但级联删除不起作用。
我收到此错误:
操作失败:无法更改关系,因为一个或多个外键属性不可为空。
当关系发生更改时,相关的外键属性将设置为空值。
如果外键不支持...
我有两张桌子:
类别:
Category_ID
Category_Name
Run Code Online (Sandbox Code Playgroud)
文章:
Article_ID
Article_Name
Article_Content
Category_ID which is Foreign key
Run Code Online (Sandbox Code Playgroud)
这是我要删除的代码:
var context = new DbContext();
Category category = context.Category.First(c => c.CategoryID == catID);
if (category != null)
{
context.Category.Remove(category);
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
更新:对于 db 首先,转到应级联的实体的属性并找到属性 End2 On Delete。将其设置为级联。
对于代码优先:您可以在映射中定义要级联删除的关系。在您的数据上下文中,重写 OnModelCreating 并定义您的自定义映射。
我还没有测试过代码,但它应该看起来像这样:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Article>()
.HasRequired(a => a.Category)
.WithMany(c => c.Articles)
.HasForeignKey(a => CategoryId)
.WillCascadeOnDelete();
}
Run Code Online (Sandbox Code Playgroud)
这个想法是调用WillCascadeOnDelete()你的映射。
https://msdn.microsoft.com/en-us/library/gg696319(v=vs.113).aspx