我很确定这是一个简单的配置错误,但我缺乏经验禁止我修复它。基本上我想使用实体框架工作向表中添加EMPLOYEE
。
这是我的方法:
public void createEmployee(CreateEmployeeModel model)
{
EMPLOYEE emp = new EMPLOYEE() {
emp_name = model.Name,
emp_email = model.Email,
emp_cell_phone = model.CellPhone,
emp_adr = model.Address
};
_db.AddToEMPLOYEES(emp);
_db.SaveChanges();
}
我在_db.SaveChanges();
调用时收到以下错误:无法在对象'dbo.EMPLOYEES'中插入具有唯一索引'R18_SDE_ROWID_UK'的重复键行。重复键值为(0)。
以下是EMPLOYEE实体的emp_id
列属性:
StoreGeneratedPattern : Identity
Concurrency Mode : None
Default Value : (None)
Entity Key : True
Name: emp_id
Nullable: False
Type : Int32
以下是SQL服务器上EMPLOYEES表的emp_id
列属性:
我不确定为什么当表中已有4名员工时,主键始终生成为0。 (0,1,2,3)。
答案 0 :(得分:2)
如果必须手动更改模型的属性,则可能没有将列设置为数据库本身的Identity列。
如果您已将数据库设置为标识列,则删除该实体并重新添加。
答案 1 :(得分:0)
我认为您可能需要执行_db.EMPLOYEES.CreateObject()
之类的操作才能正确设置EMPLOYEE
的新实例。
var emp = _db.EMPLOYEES.CreateObject();
//set values
_db.EMPLOYEES.AddObject(emp);
_db.SaveChanges();