方法SaveChanges()显示' System.Data.Entity.Infrastructure.DbUpdateException'

时间:2017-12-19 15:19:19

标签: c# asp.net-mvc asp.net-web-api

我遇到了错误'System.Data.Entity.Infrastructure.DbUpdateException' 在我SaveChanges()方法的POST点。我已经通过fiddler给了json并且显示错误

  

类型的例外   ' System.Data.Entity.Infrastructure.DbUpdateException'发生在   EntityFramework.dll但未在用户代码中处理   其他信息:无法更新EntitySet   ' PRODUCT_CATEGORY'因为它有一个DefiningQuery而没有    元素存在于   元素支持当前操作。

我通过fiddler测试了代码。 守则就在这里

public void POST([FromBody] Product_Category pc)
{
    ProductionEntities2 pd = new ProductionEntities2();
    pd.Product_Category.Add(pc);
    pd.SaveChanges();
}

1 个答案:

答案 0 :(得分:1)

SaveChanges中,如果您未在表格中指定Primary Key,则通常会发生此错误。您需要在表格中将列指定为PK,然后更新您的实体,然后重试。

如果您使用的是DB-First方法:

To create a primary key

  
      
  1. 在对象资源管理器中,右键单击要添加的表   唯一约束,然后单击“设计”。
  2.   
  3. 在表设计器中,单击数据库列的行选择器   您想要定义为主键。如果你想选择   多列,在单击行时按住CTRL键   其他列的选择器。
  4.   
  5. 右键单击列的行选择器,然后选择“设置主要”   键。
  6.   

如果您使用的是Code-First方法,请使用[Key]属性。不要忘记首先在using System.ComponentModel.DataAnnotations;指令中添加using

public class Product_Category
{
    [Key]
    public int Id{ get; set; }
}