我正在使用Entity Framework将数据添加到sql中的表中。 我有以下添加新记录的类和方法。 但是我收到以下错误。
SqlException:违反PRIMARY KEY约束 'PK__Users__3214EC27E90BFE7E'。无法在对象中插入重复键 'dbo.Users'。重复键值为(0)。该声明已经 终止。
public partial class User
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
}
public void InsertUser(MyEvent e)
{
using (var db = CreateInstance())
{
var users = db.Set<User>();
users.Add(new User
{
Name= e.Name,
Surname= e.Surname
});
db.SaveChanges();
}
}
EF如何自动增加表中的ID?
答案 0 :(得分:0)
删除DB
并将其定义为:
public int Id { get; set; }
没有任何数据注释
答案 1 :(得分:0)
应该是SQL服务器本身增加PK,而不是EF。如果您有多个EF客户端同时将数据插入数据库,则很难确保PK正确增加。使用SQL更容易,您所要做的就是将PK列设置为具有自动增量的标识。
如果PK列是row_id,则可以通过编写脚本来定义它:
[row_id] [int] IDENTITY(1,1) NOT NULL
或者,如果使用SSMS设计器创建表,则在列属性中将“身份规范”设置为:
Is Identity = Yes
Identity Increment = 1
Identity Seed = 1