为什么Entity Framework不允许SQL服务器生成主键?

时间:2012-04-19 19:59:50

标签: c# sql-server database entity-framework-4

我很确定这是一个简单的配置错误,但我缺乏经验禁止我修复它。基本上我想使用实体框架工作向表中添加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列属性:

enter image description here

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我认为您可能需要执行_db.EMPLOYEES.CreateObject()之类的操作才能正确设置EMPLOYEE的新实例。

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

_db.EMPLOYEES.AddObject(emp);
_db.SaveChanges();