[英]deleting record from oracle database using entity framework
我想使用實體框架刪除一條記錄。 DB是oracle。
方法1:
public void DeleteTask(Guid taskId, string userId)
{
var task = _context.TWFITSKs.FirstOrDefault(x => x.ID == taskId.ToString());//<---Error line
if (task == null) return;
_context.TWFITSKs.Attach(task);
_context.TWFITSKs.Remove(task);
_context.SaveChanges();
}
錯誤:ORA-00932:不一致的數據類型:預期-獲得CLOB
TWFITSK
確實包含一個數據類型為CLOB
的列,但不確定為什么這會導致此select語句出現問題。
方法二:
public void DeleteTask(Guid taskId, string userId)
{
var task = new TWFITSK { ID = taskId.ToString() };
_context.TWFITSKs.Attach(task); // <--- Error line
_context.TWFITSKs.Remove(task);
_context.SaveChanges();
}
錯誤:System.InvalidOperationException:'附加類型為'XXXXX.TWFITSK'的實體失敗,因為相同類型的另一個實體已經具有相同的主鍵值。 如果圖形中的任何實體具有相互沖突的鍵值,則使用“附加”方法或將實體的狀態設置為“不變”或“修改”時,可能會發生這種情況。 這可能是因為某些實體是新實體,尚未收到數據庫生成的鍵值。 在這種情況下,請使用“添加”方法或“已添加”實體狀態來跟蹤圖形,然后根據需要將非新實體的狀態設置為“未更改”或“已修改”。
方法3:
public void DeleteTask(Guid taskId, string userId)
{
var task = new TWFITSK { ID = taskId.ToString() };
_context.TWFITSKs.Remove(task); //<--- Error line
_context.SaveChanges();
}
錯誤:無法刪除該對象,因為在ObjectStateManager中找不到該對象
為什么不打電話給我呢? .Remove
var task = new TWFITSK { ID = taskId.ToString() };
_context.TWFITSKs.Entry(task).State = EntityState.Deleted;
_context.SaveChanges();
但是如果您的數據類型不匹配,則可能仍然無法使用。 如果可以共享表DDL腳本 , 類定義和OnModelCreating可能更好
您可以嘗試將實體狀態更改為已刪除:
var task = new TWFITSK { ID = taskId.ToString() };
_context.Entry(task).State = EntityState.Deleted;
_context.SaveChanges();
更新 :嘗試將實體傳遞給您的方法,因為聽起來好像它已附加到上下文中。 這可能起作用:
public void DeleteTask(TWFITSKs task)
{
if (task == null) return;
_context.TWFITSKs.Remove(task);
_context.SaveChanges();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.