在我的asp.net mvc4示例中,我有一个名为Sample的表,其中三列为Name,Dept和Id。在此Id中作为identity和primary.I从用户获取Name和Dept的值并插入该值到实体框架的示例表。它将值'0'传递给Id.And我得到一个错误,因为“存储更新,插入或删除语句影响了意外的行数(0)。实体可能已被修改或删除,因为实体已加载。刷新ObjectStateManager条目“。请帮助我。
答案 0 :(得分:0)
在列上设置"autoincrement"
并在sql server中将id设置为主键..
答案 1 :(得分:0)
在EF代码中,首先由数据注释完成。确保在更改方案后重新创建表(或数据库)。
public class Sample
{
[Key]
[Required]
[Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)] //auto increment id
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public int Dept { get; set; }
}
您不需要传递Id的整数。 EF将自动解决此问题。只需通过填写名称和部门来创建对象。通过将更改保存到数据库,EF将自动填写自动生成的Id。