2015-09-08 43 views
1

我的程序正在將記錄寫入數據庫表。到目前爲止,它已經向這張表格寫了大約58個新記錄。突然間,我收到一條錯誤消息,提示「找不到或更改了行」。這很奇怪,因爲我插入了一條新記錄,而不是試圖找到一個或更新現有的記錄。下面是代碼的小位,我使用創建一個對象,然後插入到表:System.Data.Linq.ChangeConflictException?行未找到或更改?但是,我插入,而不是更新

// create new comment object 
var comment = new Comment 
        { 
         TableName = "Circuit", 
         TableKey = circuitId, 
         Text = remarks, 
         CreatedOn = DateTime.Now, 
         CreatedByName = "loadCC03Circuits", 
         CreatedByUupic = "000000000" 
        }; 

cimsContext.Comments.InsertOnSubmit(comment); 
cimsContext.SubmitChanges(); 

我不太知道該怎麼辦,在這一點上。每個字段都有一個值,沒有空值。而且,正如我所說的,在這種情況發生之前,已經有58條記錄被這個相同的代碼寫出來,除了數據關閉之外(根據調試器會話中的字段值,這些記錄不是)我是不太確定還有什麼要檢查的。有什麼建議?

編輯:我在下面添加了一個答案,使這個問題消失。但是,我不確定這個解決方案爲什麼起作用。

+0

你看過這個問題嗎? http://stackoverflow.com/questions/8851482/linq-row-not-found-or-changed – Chizzle

+0

我做到了。當他們從表中讀取記錄,修改記錄,然後更新記錄時,就會出現這個問題。就我而言,我只是想插入一條新紀錄。這讓我感到困惑:它說「行未找到或改變......」但我不想找一排或改變一個;我插入一個新的。 – Kevin

+0

您會看到關於可空列不匹配模型的第二個答案?可能是這樣,只是一個鏡頭 – Chizzle

回答

1

我找到了一個解決方案,但不是「答案」。該解決方案,在這種情況下,是使包含的DateTime.Now值的變量:

var dateNow = DateTime.Now; 

我改變了受影響的代碼行看起來像這樣:奇蹟

CreatedOn = dateNow, 

奇觀,我不再收到錯誤。我不確定爲什麼這樣解決了這個問題,我只是根據同事的建議嘗試了這個。他認爲我工作的沙箱數據庫很慢,可能會影響DateTime.Now函數。無論如何,這使問題消失了。不過,我希望我有一個確定的答案。當我不明白爲什麼解決方案能夠工作時,我討厭讓問題消失。

相關問題