2

我很确定这是一个简单的配置错误,但我缺乏经验使我无法修复它。基本上我想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();:无法在具有唯一索引“R18_SDE_ROWID_UK”的对象“dbo.EMPLOYEES”中插入重复的键行。重复键值为 (0)。

这是emp_idEMPLOYEE 实体的列属性:

StoreGeneratedPattern : Identity
Concurrency Mode : None
Default Value :  (None)
Entity Key : True
Name: emp_id
Nullable: False
Type : Int32

这是emp_idSQL Server 上 EMPLOYEES 表的列属性:

在此处输入图像描述

我不确定为什么当表中已经有 4 名员工时,主键总是生成为 0。(0,1,2,3)。

4

2 回答 2

2

如果您必须手动更改模型的属性,则很可能您没有将该列设置为数据库本身的 Identity 列。

如果您已将数据库设置为标识列,则删除该实体并重新添加它。

于 2012-04-19T20:18:23.817 回答
0

我认为你可能需要做一些事情来正确设置_db.EMPLOYEES.CreateObject()一个新的实例。EMPLOYEE

var emp = _db.EMPLOYEES.CreateObject();
//set values

_db.EMPLOYEES.AddObject(emp);
_db.SaveChanges();
于 2012-04-19T20:05:58.670 回答