2015-06-18 30 views
1

我的仓库正在通过UnitOfWorkAdd方法暴露的只是下面的代码:获取标识新创建的对象与EF

public void Add(Employee emp) 
{ 
    context.add(emp); 
} 

然后,从的UnitOfWork,我调用Add()方法与此代码:

this.UnitOfWork.EmployeeRepository.Create(emp); 
this.UnitOfWork.Commit(); // This calls SaveChanges() EF method 

现在的问题是我该如何获得Id新创建的对象?

回答

1

SaveChanges之后,员工实体将分配新ID。找到一种方法将其返回到更高级别的方法。

1

通常情况下,如果您的Id是标识,当您保存更改时,Id将自动填充。

context.Employees.Add(emp); 
context.SaveChanges(); 
var newId=emp.Id; //The Id is filled after save changes 

另一个变量可能是使用GetDatabaseValues方法:

context.Entry(emp).GetDatabaseValues(); 
var id = emp.Id; 
+0

所以通过UOW调用库还是会给予我的ID作为它的一个标识列 – InTheWorldOfCodingApplications

+0

它应该有新的价值,但无论如何检查调用'Commit'方法后,你'emp''实例的'Id',如果它没有新的'Id'值,则使用第二个变体。 – octavioccl