首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架6-在事务中保存数据

实体框架6-在事务中保存数据
EN

Stack Overflow用户
提问于 2015-12-18 17:57:41
回答 1查看 901关注 0票数 1

我需要一些帮助来理解我们试图在实体框架中解决的情况。

我们试图更新两个表1.映射表(两个外键= ProductId和anotherId) 2.在表中创建一个新记录(调用产品,生成的主键是productId)

我们希望确保产品表和映射表都被成功更新,否则事务角色就会返回。

我们使用单个事务作为

代码语言:javascript
复制
using (var context = new SomeContext()) 
{ 
    using (var dbContextTransaction = context.Database.BeginTransaction()) 
    { 
        try 
        { //Create the record to be saved
            var product = new Product{ // set the data}
            var newProductId = context.SaveChanges(); 

            //Update the Mapping Table
            var anotherData = context.AnotherTable.where(x => x.id = anotherId).FirstOrDefault();
            var productData = context.Product.where(x => x.id = newProductId).FirstOrDefault();

          //Create the Mapping Table record  
          productData.AnotherDatas.Add(anotherData);
          context.SavceChanges();

          dbContextTransaction.Commit(); 
        } 
        catch (Exception) 
        { 
            dbContextTransaction.Rollback(); 
        } 
    } 
} 

但问题是

代码语言:javascript
复制
var productData = context.Product.where(x => x.id = newProductId).FirstOrDefault(); 

返回为null,我假设这是因为事务没有提交。

如何克服这种情况?如何创建映射记录并使用新创建的Id?在同一个事务中运行多个保存会导致错误吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-18 18:00:34

您应该将product添加到上下文中以保存它:

代码语言:javascript
复制
context.Product.Add(product);
context.SaveChanges();

此外,SaveChanges()返回已更改记录的计数,因此在保存后查看product.id以检索插入的记录id。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34361372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档