学生表有id,name,gender,address列。id是身份列。当使用下面的代码行将每个学生的详细信息添加到此表中时,
_dataContext.Students.Add(student);
_dataContext.SaveChanges();
我需要得到最后插入的id值。这个id值我需要插入到其他表说'主题'表作为studentid列。
我怎样才能得到最后插入的ID?
学生表有id,name,gender,address列。id是身份列。当使用下面的代码行将每个学生的详细信息添加到此表中时,
_dataContext.Students.Add(student);
_dataContext.SaveChanges();
我需要得到最后插入的id值。这个id值我需要插入到其他表说'主题'表作为studentid列。
我怎样才能得到最后插入的ID?
2条答案
按热度按时间wvt8vs2t1#
Id
负责检索ID并修复它所持久化的所有对象的关系。调用
SaveChanges
时,DbContext检测对其跟踪的对象的所有修改,并将所有修改保存在单个事务中。SaveChanges
本质上是Commit()
调用,应仅在工作/业务事务单元的最后调用。SaveChanges
将保存所有新对象或修改对象的所有更改,检索新对象的新ID并修复关系。之后,student.Id
应该具有新值沿着与之相关的任何其他新类。这意味着您可以编写以下代码来持久化新课程和学生,并获取所有这些课程和学生的ID。
DbSet.Add
方法在Added
状态下将根课程和 all 可达对象添加到DbContext中。所有这些对象都将由SaveChanges
保存。如果您想放弃更改,只要不调用
SaveChanges
即可。当DbContext被释放时,更改也将丢失。这就解释了为什么所有非“repository”的CRUD类都被破坏得如此严重。
无法回滚可能在单个Student之外执行的数十个DELETE、UPDATE和INSERT。如果出现错误,您必须显式打开连接并启动长时间运行的事务才能回滚该Student。
bvuwiixz2#
从我的表中选择时间戳,值,卡ORDER BY时间戳DESC LIMIT 1