【发布时间】:2016-11-01 02:13:04
【问题描述】:
首先,对不起我的英语。这不是我的第一语言。我正在尝试删除数据库中的数据,但在调用 SaveCahnges 时收到异常。
EntityFramework.dll 中出现“System.Data.Entity.Infrastructure.DbUpdateException”类型的异常,但未在用户代码中处理`
这是一个内部异常消息
InnerException {"DELETE 语句与 REFERENCE 约束冲突 \"FK_dbo.OfferImages_dbo.Offers_Offer_Id\"。冲突发生在数据库 \"aspnet-LivrETS-20160629111902\",表 \"dbo.OfferImages\",列 ' Offer_Id'。\r\n语句已终止。"} System.Exception {System.Data.SqlClient.SqlException}
这是我的仓库
public void DeleteOffer(string[] Ids)
{
foreach (string Id in Ids)
{
Offer offer = GetOfferBy(Id);
_db.Offers.Remove(offer);
}
_db.SaveChanges();
}
我使用 AJAX 从我的 javascript 代码中调用此函数。
我的迁移已更新,但我的数据库中有一些表不在我的模型中,因为我安装了一个随其表一起提供的依赖项 (hangFire)。
谢谢
【问题讨论】:
-
发生异常时,转到InnerException消息并将其复制到您的问题中。
-
我认为如果一个项目会破坏非级联的约束,则无法删除它......
-
内部异常概述了问题,并且 FK 的命名方式易于找到问题的根源。您的表 (OfferImages) 具有对其他表 (Offers) 的外键引用。如果不首先删除 OfferImages 表中的一个或多个条目,就无法删除 Offers 表中的条目,这与您的数据库当前的结构方式相同。
-
感谢您的帮助
标签: c# asp.net sql-server asp.net-mvc entity-framework