我有以下實體模型:實體框架設置ID時,它不應該
我加了一堆任務,並開始處理這些任務。完成每個任務後,我想記錄有關它的信息。
我用下面的代碼這樣做:
TASK scheduledTask = entities.TASKs.First(x => x.TASK_NAME == e.ClassName);
scheduledTask.NEXT_RUN = e.NextRun;
entities.SaveChanges();
TASK_LOG logMsg = new TASK_LOG()
{
TASK = scheduledTask,
MESSAGE = e.TaskResult.Message,
STATUS = e.TaskResult.Status ? "Successful" : "Failure",
TIMESTAMP = e.CompletedTime
};
entities.TASK_LOG.AddObject(logMsg);
entities.SaveChanges();
不過,我得到一個例外,說明我不能修改TASK_LOG對象的ID屬性。我看不到我的代碼將如何修改logMsg
對象ID屬性。
注意:兩個實體中的ID屬性由數據庫生成並設置爲StoreGeneratedPattern
- Identity。
編輯:
第2輪 - 現在,我得到一個錯誤關於有第一SaveChanges
調用打開連接/ avaliable。
第3次運行 - 獲取錯誤存儲更新,插入或刪除語句影響了意外數量的行(0)。在最後的SaveChanges
打電話。
這種錯誤不一致使它很難解決。
AddObject不需要的是什麼?我創建了一個TASK_LOG對象,但它沒有附加到與數據庫相關的任何東西,直到我將它添加到實體中。 看到我編輯的帖子關於錯誤。 – Justin 2012-07-30 21:13:19
我在想你需要做的事:entities.TASK.AddObject(scheduledTask);在第一次.SaveChanges之前;然後刪除entities.TASK_LOG.AddObject(logMsg); – MikeTWebb 2012-07-30 21:23:35
@MikeTWebb不,「TASK scheduledTask」已經連接,不需要重新添加。 – CodeCaster 2012-07-30 21:38:17