2010-07-20 161 views
1

我不知道爲什麼它是SaveChanges()上的錯誤,我在谷歌搜索,一些身體說使用EF,數據庫的表有這樣的主鍵,我有這個,但仍然錯誤。錯誤消息不夠清楚,它只是拋出System.Data.UpdateException。 守則:插入.NET 4.0實體框架錯誤?

public static void AddAccount(int _acc_id,string _name) 
{ 
    dataEntities de = new dataEntities(GetEntityConn()); 
    account acc = new account 
    { 
     account_id = _acc_id, 
     name = _name 
    }; 
    de.AddObject("account", acc); 
    de.SaveChanges(); 
} 
+2

異常的消息是什麼? – adriaanp 2010-07-20 14:23:48

+0

它只是一行:無法更新EntitySet。 :( – Cheung 2010-07-20 14:46:51

+0

添加您的解決方案作爲答案,並將其標記爲「關閉」此問題,並將其作爲其他人的參考:) – 2010-07-20 21:46:05

回答

0

我的精神力量告訴我,ACCOUNT_ID領域上有和_acc_id的值已經在表中的唯一約束。

如果我強大的心靈能力是錯誤​​的,那麼需要更多的信息。 8)

+0

該表有2列,account_id和名稱,我已刪除account_id = acc_id現在,account_id是自動增量,因爲我讀過(SQL CE與EF4一起使用時,不支持自動生成的主鍵:http://social.msdn.microsoft.com/forums/en-US/sqlce/thread/48984bd4-0921-4637-bd8f-8aa1ae9514ab /) 現在我只是插入名字,但仍然不起作用:( – Cheung 2010-07-20 14:39:09

+0

也許使用存儲過程來做傳入的只是名字並使用EF來調用存儲過程?這可能是一個很好的實現 – Task 2010-07-20 15:32:00

0

猜測EntitySetName沒有被稱爲帳戶,但很難說,沒有更多的信息。

我會做的是一樣的東西:

public static void AddAccount(int _acc_id,string _name) 
{ 
    dataEntities de = new dataEntities(GetEntityConn()); 
    account acc = new account 
    { 
     account_id = _acc_id, 
     name = _name 
    }; 
    de.Accounts.Add(acc); 
    de.SaveChanges(); 
} 

這擺脫了字符串值,所以它也將有助於重構

+0

我打開* .edmx來看,實體集名稱真的是「賬號」:( 但是,並沒有「添加」方法,這裏的屏幕截圖爲 http:///www.img xc.com/fullimage/qNzIWp.png – Cheung 2010-07-20 14:43:47

+0

它不是AccountSet? – Jeroen 2010-07-20 15:04:07

+0

'de.account'是什麼類型? – 2010-07-20 21:45:10

0

更新: 我曾嘗試上創建一個相同的表SQL Server 2008,從中生成edmx文件,並使用相同的代碼插入,它的工作原理!所以我相信SQLCE所有關於EF 4.0 .... 我上傳的窗口形式的測試項目,具有SQLCE數據庫,並用一個按鈕事件,你可以下載

http://www.netfrd.com/testproject.zip

代碼很簡單,但它真的不起作用。