无法使用Entity Framework中的savechanges()更新数据库

时间:2013-11-12 14:18:11

标签: c# asp.net entity-framework

我正在尝试实体框架的模型第一种方法。我是实体框架的新手并从 here学习并以相同的方式编码。但是我收到了这个错误

Unable to update the EntitySet 'Users' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation.

我正在运行的代码是:

protected void Page_Load(object sender, EventArgs e)
    {

        User use = new User();
        use.First_Name = "Arslan";
        use.Last_Name = "Akbar";
        use.Password = "alone";
        use.Email = "arslan@gmail.com";
        use.Designation = "Head";
        using (CustomersEntities ce = new CustomersEntities())

        {

            //int count = ce.Users.Count();
            //count++;
           // use.Id = count;

            ce.Users.Add(use);
            ce.SaveChanges();
          //  ce.Users.Create(use);
          //  ce.SaveChanges();
            //ce.Entry(use).State = System.Data.EntityState.Added;

        }

    }

我无法确定问题。

2 个答案:

答案 0 :(得分:0)

有很多事情可能导致这种情况,有些内容在上面的评论中有所涉及:

  • 尝试更新视图
  • 尝试更新没有主键的表
  • 主键直接添加到表中,而不是先通过模型,因此C#代码看不到主键
  • 有一个对另一个表的引用,并且键有一些问题

我会备份,删除你所拥有的内容,然后从头开始重试。

PS:我刚刚完成了链接中的示例,它对我来说很好。

我注意到Add方法是“AddObject”而不是“Add”。您应该检查项目的目标框架。

答案 1 :(得分:-1)

数据库表没有主键,在数据库中为用户表设置了主键。