使用EF6添加数据

时间:2017-01-09 16:34:25

标签: c# entity-framework entity-framework-6

您好我想在事务中使用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,即使我的交易尚未提交......

感谢。

1 个答案:

答案 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();