0
我刪除刪除對象的一些孩子的在我的派生EFContextProvider類中重寫BeforeSaveEntity
保留外鍵衝突:自參照對象和Breeze.js的SaveChanges
protected override bool BeforeSaveEntity(EntityInfo entityInfo)
{
dbEntities db = new dbEntities();
if (entityInfo.Entity.GetType() == typeof(ServerFile) && entityInfo.EntityState == EntityState.Deleted)
{
ServerFile filetodelete = entityInfo.Entity as ServerFile;
if (filetodelete.OriginalFileID == null)
{
IEnumerable<ServerFile> f = db.ServerFiles.Where(x => x.OriginalFileID == filetodelete.ID);
foreach (ServerFile fd in f)
db.ServerFiles.Remove(fd);
}
}
db.SaveChanges();
}
在我的派生類ApiController與歸因我[BreezeController]
因此刷新我的上下文:
public SaveResult SaveChanges(JObject saveBundle)
{
_contextProvider.ObjectContext.Refresh(RefreshMode.StoreWins, _contextProvider.ObjectContext.ObjectStateManager.GetObjectStateEntries(System.Data.Entity.EntityState.Deleted));
return _contextProvider.SaveChanges(saveBundle);
}
但我仍然得到錯誤:
An exception of type 'System.Exception' occurred in Breeze.ContextProvider.dll
but was not handled in user code
Additional information: Store update, insert, or delete statement affected an
unexpected number of rows (0). Entities may have been modified or deleted since
entities were loaded. Refresh ObjectStateManager entries.