我有一个 datagridview 和附加的员工列表,如下所示:
IQueryable<Employee> data = (from em in db.Employees
where em.StationID == stationID
select em);
dgvView.DataSource = data;
现在我想通过 datagridview 中的选定行删除特定的员工:
using (PetrolNetwork db = new PetrolNetwork())
{
Employee empl = (Employee)dgvView.CurrentRow.DataBoundItem;
db.Employees.DeleteOnSubmit(empl);
db.SubmitChanges();
}
毫不奇怪,我有异常“无法删除尚未附加的实体。 ”
当我将此代码替换为:
Employee employee = (from em in db.Employees
where em.ID == empl.ID
select em).Single();
db.Employees.DeleteOnSubmit(employee);
db.SubmitChanges();
一切正常,但在 sqlprofiler 中,我们可以看到一个额外的数据库选择来检索我们的特定员工,然后从语句中删除。
当我从 datagridview 的 DataBoundItem 得到它时,我如何删除我的员工,而没有任何额外的选择语句?我可以看到的一种方法是通过 ID 删除自定义存储过程。可能还有其他最好的方法吗?