컨트롤러에서 객체는 구축되어 데이터베이스에 저장됩니다. 동일한 컨트롤러 작업에서 다른 유형의 다른 개체를 만들고 저장했습니다 (Class SecondType에도 ID가 포함됨).
cDb.SecondType.Add(new SecondType { Designation = "test" });
cDb.SaveChanges();
작동합니다. 인덱스 (스캐 폴딩 옵션을 사용하여 클래식 생성, 삭제, ...보기를 만들었습니다) 또는 상세보기를 볼 때이 개체를 볼 수 있고 수정할 수도 있습니다. 그러나 삭제를 클릭하면 삭제를 확인해야하는 첫 번째보기가 표시되고 제출 버튼을 누른 후 명령 DbUpdateException
에서 추가 정보없이 a 를 반환합니다 SaveChanges
.
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
SecondType secondType = db.SecondTypes.Find(id);
db.SecondTypes.Remove(secondType);
db.SaveChanges();
return RedirectToAction("Index");
}
왜 이런 일이 발생하는지 모르겠고이 문제를 해결할 아이디어가 있다면 매우 감사하겠습니다.
이것은 내가 복사 할 수있는 것입니다.
System.Data.Entity.Infrastructure.DbUpdateException ist aufgetreten.
HResult=-2146233087
Message=Fehler beim Aktualisieren der Einträge (= Error while updating the entries). Weitere Informationen finden Sie in der internen Ausnahme.
Source=EntityFramework
StackTrace:
bei System.Data.Entity.Internal.InternalContext.SaveChanges()
bei System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
bei System.Data.Entity.DbContext.SaveChanges()
bei Irgendwas.Controllers.SecondTypeController.DeleteConfirmed(Int32 id) in c:\Users\username\Documents\Visual Studio 2012\Projects\Irgendwas\Irgendwas\Irgendwas\Controllers\SecondTypeController.cs:Zeile 113.
InnerException: System.Data.UpdateException
HResult=-2146233087
Message=Fehler beim Aktualisieren der Einträge. Weitere Informationen finden Sie in der internen Ausnahme.
Source=System.Data.Entity
StackTrace:
bei System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
bei System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
bei System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
bei System.Data.Entity.Internal.InternalContext.SaveChanges()
InnerException: System.Data.SqlClient.SqlException
HResult=-2146232060
Message=Die DELETE-Anweisung steht in Konflikt mit der REFERENCE-Einschränkung 'FK_dbo.ThirdTypes_dbo.Second_SecondType_ID'. Der Konflikt trat in der 'Irgendwas.Models.SecondTypeContext'-Datenbank, Tabelle 'dbo.ThirdTypes', column 'SecondType_ID' auf.
Die Anweisung wurde beendet.
Source=.Net SqlClient Data Provider
ErrorCode=-2146232060
Class=16
LineNumber=1
Number=547
Procedure=""
Server=.\SQLEXPRESS
State=0
StackTrace:
bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
bei System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
bei System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
bei System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
bei System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
bei System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
InnerException:
내 독일어는 약간 거칠지 만 dbo.SecondTypes 테이블에서 삭제하려는 항목을 참조하는 dbo.ThirdTypes 테이블에 항목이 있다고 생각합니다.
secondType 항목을 제거하고 SaveChanges ()를 호출하기 전에 dbo.SecondTypes를 참조하는 모든 dbo.ThirdTypes 항목을 제거해보십시오.
이렇게 :
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
SecondType secondType = db.SecondTypes.Find(id);
foreach (var thirdType in secondType.ThirdTypes)
{
db.ThirdTypes.Remove(thirdType);
}
db.SecondTypes.Remove(secondType);
db.SaveChanges();
return RedirectToAction("Index");
}
데이터베이스의 관계에 대해 계단식 삭제를 활성화 할 수도 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다