1

我正在尝试实体框架的模型优先方法。我是 Entity Framework 的新手,从这里学习并以相同的方式编码。但我收到了这个错误

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;

        }

    }

我无法确定问题所在。

4

2 回答 2

0

导致这种情况的原因有很多,上面的评论中介绍了一些:

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

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

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

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

于 2013-11-12T19:56:35.007 回答
-1

数据库表没有主键,在您的数据库集中用户表的主键。

于 2019-08-28T05:27:50.663 回答