(已解决)
当我试图从我们正在构建的应用程序中保存对一个实体的更改时,我得到了一个非常奇怪的错误。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "ReportID,RecordID,ReportName,FileName,ReportTypeID,OwningApplicationID,RecordCID,AssignedUserID")] Report report)
if (ModelState.IsValid)
db.Entry(report).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
ViewBag.OwningApplicationID = new SelectList(db.Applications, "ApplicationID", "ApplicationName", report.OwningApplicationID);
ViewBag.ReportTypeID = new SelectList(db.ReportTypes, "ReportTypeID", "ReportTypeText", report.ReportTypeID);
return View(report);
在db.SaveChanges()中,我得到以下错误。
An exception of type 'System.Data.Entity.Infrastructure.DbUpdateException' occurred in EntityFramework.dll but was not handled in user code
如果我检查内部的异常,我发现这个。
"Invalid object name 'tg_DataCleaningMaintenance_PendingInsert__20150709_000000_953cccd7-0ba4-4b3e-ae5d-df6b936841f8'."
异常发生在这里。
at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()
at System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.<Update>b__2(UpdateTranslator ut)
at System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update[T](T noChangesResult, Func'2 updateFunction)
at System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update()
at System.Data.Entity.Core.Objects.ObjectContext.<SaveChangesToStore>b__35()
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func'1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
at System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction)
at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass2a.<SaveChangesInternal>b__27()
我在网上找不到任何关于DataCleaningMaintenance_PendingInsert或类似的东西。我确实记得一个多星期前在数据库中看到过一个名字类似的表,后来它被删除了。
我已经从数据库中更新了我的模型,重建了项目,搜索了项目中对该表的任何引用,验证了该表在数据库中不存在。我在调试过程中检查了db对象,找不到对这个对象的任何引用,而且我已经验证了连接字符串是正确的,包括数据库名称(不仅仅是服务器名称)。在这一点上,我不知道该如何处理这个问题。请帮助我!
编辑:在SQL Server的报告表上确实有一个触发器,它导致服务器用上述信息拒绝我的更新。这个触发器似乎来自一个SSIS包,它在这个表上使用了FuzzyLookup。删除该触发器应该可以解决这个问题。