2009-06-15 117 views
1

嗨,我有一個奇怪的時間與LINQ到SQLLINQ到SQL無效的轉換上插入,而不是更新

我建立一個postit系統,讓人們作出postits和將它們附加到多個對象。這個數據庫是一個包含郵件本身(id,郵件等)和一個鏈接郵件的表格,郵件附有這些記錄。

我正在嘗試的奇怪的事情是以下。 當我從數據庫中檢索一個對象(使用Linq-To-SQL)時,做一些數據更改並重新提交,我沒有遇到任何麻煩。 但是,當我嘗試創建一個新的時,我在datacontext中的Submitchanges方法中發生異常:指定的Cast無效。

我一直在網上看,主要是它涉及映射的一些變化,但這不應該是這樣,因爲我可以更新沒有任何問題。

T_PostIt np = new T_PostIt(); 
       np.CreatedOn = DateTime.Now; 
       np.CreatedBy = Request.ServerVariables["REMOTE_USER"].ToString(); 
       np.MarkedForDeletion = false; 
       np.Message = txtNewPostitMessage.Text; 
       np.ModifiedBy = Request.ServerVariables["REMOTE_USER"].ToString();      
       foreach (int i in ServerIds) 
       { 
        T_PostIt_Link pil = new T_PostIt_Link(); 
        pil.LinkType = 'S'; 
        pil.LinkID = i; 
        pil.MarkedForDeletion = false; 
        np.T_PostIt_Links.Add(pil);   
       } 
       dc.T_PostIts.InsertOnSubmit(np); 
       dc.SubmitChanges(); 

我使用上面的代碼,似乎無法得到我做錯了什麼。

幫助任何人嗎?

回答

0

您是否嘗試過逐一更新屬性,然後將更改保存回數據庫?當一個特定值發生變化時,更新實體可能會失敗。如果我猜測,可能是CreatedOn的值無法轉換爲數據庫中的有效日期時間(由於文化設置)。這可以解釋爲什麼更新可以正常進行 - 您在這裏不會更改CreatedOn的值。但是,您在插入新實體時會這樣做。

編輯:也許this是你面臨的問題。另外,請務必閱讀this thread,其中主題啓動者最終指向提到它是Linq2Sql中的一個顯卡錯誤的第一個線程。

+0

我試圖更新createdon的更新方法,它沒有崩潰... – 2009-06-15 09:51:57

+0

嗯,好吧,我的猜測並不是正確的然後:-)我用一些鏈接更新了我的答案。您可能會遇到與使用Linq2Sql時一些人一樣的問題。我希望它有幫助。 – Razzie 2009-06-15 10:18:48