У меня есть метод создания, в котором я добавляю новый объект Employee в базу данных. После добавления сотрудника я хочу перейти на страницу редактирования, чтобы иметь возможность ввести более подробную информацию о сотруднике, если я хочу.

Метод действия Edit принимает 1 параметр, EmployeeID, однако этот EmployeeID динамически присваивается базой данных после добавления объекта в таблицу Employee. Как мне получить доступ к идентификатору вновь добавленного сотрудника после _db.SaveChanges () в том же методе действия?

Вот как выглядит часть моего метода:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Employee Employee) {
 _db.Employees.Add(Employee);
 _db.SaveChanges();
 //access the employee and gets its id???
 //var id = id???
 return RedirectToAction("EditEmployeeViewModel", new { id = id});
}
2
duxfox-- 16 Дек 2014 в 16:01

2 ответа

Лучший ответ

Вы можете просто использовать это:

Employee.Id

Объект Employee синхронизируется с изменениями, которые вы вносите в db. Следовательно, когда вы добавляете эти объекты в Employees и вызываете SaveChanges, эти объекты будут сохранены в db, и его состояние будет обновлено, имея Id из Employee.

В частности, как указано здесь здесь :

Структура Entity по умолчанию следует за каждым INSERT с помощью SELECT SCOPE_IDENTITY (), когда используются автоматически сгенерированные идентификаторы.

3
Community 23 Май 2017 в 10:28

Попробуйте следующий код и получите доступ к последнему текущему идентификатору сотрудника, например Employee.Id: -

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Employee Employee) {
 _db.Employees.Add(Employee);
 _db.SaveChanges();

 var id = Employee.Id;
 return RedirectToAction("EditEmployeeViewModel", new { id = id});
}
2
Neel 16 Дек 2014 в 13:03