我不知道为什么在SaveChanges()上出现错误,我在谷歌搜索,有人说使用EF,数据库的表有主键,我有这个,但仍然是错误。错误消息不够清楚,它只是抛出System.Data.UpdateException。 守则:
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();
}
答案 0 :(得分:2)
解决:我找到了解决方案,请参阅此主题:http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/48984bd4-0921-4637-bd8f-8aa1ae9514ab 简而言之,不要使用int作为数据类型,使用uniqueidentifier类型。这个问题不会发生在SQL Server上,只有在使用SQLCE时才会发生。
答案 1 :(得分:0)
我的通灵能力告诉我,account_id字段对其有唯一约束,并且_acc_id的值已经在表格中。
如果我强大的精神力量是错误的,那么就需要更多的信息。 8)
答案 2 :(得分: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();
}
这消除了字符串值,因此它也应该有助于重构
答案 3 :(得分:0)
<强>更新强> 我尝试在SQL Server 2008上创建一个相同的表,从中生成edmx文件,并使用相同的代码进行插入,它的工作原理!所以我相信所有关于EF 4.0与SQLCE .... 我以窗口形式上传了一个测试项目,带有一个SQLCE数据库,只需一个按钮事件,就可以下载了
http://www.netfrd.com/testproject.zip
代码很简单,但它确实不起作用。