【发布时间】:2011-04-11 13:36:34
【问题描述】:
我的数据库中有这两个表,名为 Vendors 和 VendorPriceBreaks:
Vendors
-----------------
VendorID (PK)
Name
VendorPriceBreaks
-----------------
VendorPriceBreakID (PK)
VendorID (FK)
Price
当我删除一个供应商时,我想同时删除与之相关的所有 VendorPriceBreaks。我正在使用实体框架。
我先尝试了这个:
public RedirectToRouteResult Delete(int id)
{
MyEntities entities = new MyEntities();
var vendor = entities.Vendors.FirstOrDefault(v => v.VendorID == id);
entities.Vendors.Context.DeleteObject(vendor);
entities.Vendors.Context.SaveChanges();
return RedirectToAction("Index");
}
这给了我错误消息:DELETE 语句与 REFERENCE 约束“FK_VendorPriceBreaks_Vendors”冲突
然后我在删除对象之前添加了这一行:vendor.VendorPriceBreaks.Clear();
但后来我收到了以下错误消息:操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
最好的方法是什么?
【问题讨论】:
标签: c# asp.net asp.net-mvc entity-framework