您好我想在事务中使用EF6创建或更新数据。 在方法中,我想创建一个这样的doc模型:
docCible = new SCR_MDL_DOC();
docCible = transposition.TransposeObject(docSrc, docCible);
docCible.DC_OCC = DateTime.Now;
docCible.ID_UTIL_CREAT = IdUtilisateur;
docCible.NO_SEQ_GABAR_MDL_DOC = gabaritCible.NO_SEQ_GABAR_MDL_DOC;
context.SCR_MDL_DOC.Add(docCible);
context.SaveChanges();
docCible.NO_SEQ_MDL_DOC = docCible.NO_SEQ_MDL_DOC;
我将我的上下文作为我的保存方法的参数传递。
问题在于,当我执行saveChanges时,我想获取新记录的ID。 但ID仍为0。 我以为我可以获得新的ID,即使我的交易尚未提交......
感谢。
答案 0 :(得分:0)
确保在检查PK值之前完成交易。
另外,我会尝试删除最后一行的冗余作业:docCible.NO_SEQ_MDL_DOC = docCible.NO_SEQ_MDL_DOC;
调用transaction.Complete()
的示例context.SCR_MDL_DOC.Add(docCible);
context.SaveChanges();
transaction.Complete(); // Call Complete() on TransactionScope object
var id = docCible.NO_SEQ_MDL_DOC; // ID should be available at this point
或者,您可以使用context.Database
执行SQL命令以获取下一个序列:
var result = context.Database.SqlQuery<int>("select SOME_SEQ.nextval from dual;").FirstOrDefault();