在将值插入数据库时​​获得异常

时间:2017-10-09 09:57:35

标签: c# asp.net-mvc entity-framework

我正在使用代码优先方法,我得到以下异常:

  

“保存或接受更改失败,因为多个'CustomerInfo'类型的实体具有相同的主键值。请确保显式设置主键值是唯一的。确保在数据库中正确配置了数据库生成的主键在Entity Framework模型中。使用Entity Designer进行数据库优先/模型优先配置。使用'HasDatabaseGeneratedOption'流畅API或'DatabaseGeneratedAttribute'进行代码优先配置。“

2 个答案:

答案 0 :(得分:0)

主键在表格中是唯一的。因此,如果为两个或多个记录的主键提供相同的值,则它将失败。解决方案是将主键值视为唯一。

答案 1 :(得分:0)

主键必须是唯一的,因为它是唯一标识行(表条目)的键。您可能正在尝试设置已为另一个表条目设置的主键的值。 解决此类问题的一种方法是使用自动递增的主键,这样您就不必担心它。例如,您可以将以下附加字段作为主键引入服务器:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Int32 Id { get; set; }

因此,这将自动生成并设置主键,使您无需自行设置主键。 这仍然是解决问题的一种方法,其他方法也可用于解决您的问题。