代码之家  ›  专栏  ›  技术社区  ›  Cheung

.NET 4.0实体框架插入时出错?

  •  1
  • Cheung  · 技术社区  · 15 年前

    我不知道为什么savechanges()出错,我在google上搜索,有人说用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();
    }
    
    4 回复  |  直到 15 年前
        1
  •  2
  •   Cheung    15 年前

    解:我找到了解,看这个线: http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/48984bd4-0921-4637-bd8f-8aa1ae9514ab 简而言之,不要将int用作数据类型,请使用uniqueidentifier类型。此问题不会在SQL Server上发生,仅在使用sqlce时发生。

        2
  •  0
  •   Task    15 年前

    我的灵力告诉我,账户ID字段有一个唯一的约束,账户ID的值已经在表中了。

    如果我强大的精神力量是错误的,那么就需要更多的信息。8)

        3
  •  0
  •   Sander Rijken    15 年前

    猜测entitysetname不是account,但是如果没有更多的信息,这很难说。

    我要做的是:

    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();
    }
    

    这将除去字符串值,因此它还应该有助于重构

        4
  •  0
  •   Cheung    15 年前

    更新: 我尝试在SQL Server 2008上创建一个相同的表,从中生成EDMX文件,并使用相同的代码进行插入,这是可行的!所以我相信这一切都是关于EF4.0和sqlce… 我上传了一个窗口形式的测试项目,有一个sqlce数据库,有一个按钮事件,你可以下载到

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

    代码很简单,但实际上不起作用。