我遇到了错误'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();
}
答案 0 :(得分:1)
在SaveChanges
中,如果您未在表格中指定Primary Key,则通常会发生此错误。您需要在表格中将列指定为PK,然后更新您的实体,然后重试。
如果您使用的是DB-First方法:
- 在对象资源管理器中,右键单击要添加的表 唯一约束,然后单击“设计”。
- 在表设计器中,单击数据库列的行选择器 您想要定义为主键。如果你想选择 多列,在单击行时按住CTRL键 其他列的选择器。
- 右键单击列的行选择器,然后选择“设置主要” 键。
醇>
如果您使用的是Code-First方法,请使用[Key]
属性。不要忘记首先在using System.ComponentModel.DataAnnotations;
指令中添加using
:
public class Product_Category
{
[Key]
public int Id{ get; set; }
}