C# 如何使用entity-framewrok-4在事务中插入数据?

C# 如何使用entity-framewrok-4在事务中插入数据?,c#,entity-framework,C#,Entity Framework,如何使用entity-framewrok-4在事务中插入数据 我有一个order对象,它还有其他集合,我需要在事务中插入到数据库中 cOrder-> ->lstOrderItems -->lstDressing, lstTopping, lstspecialInstruction ->userDetails ->trasactionTblsdetails 还需要以下意见:- 1) 在数据库级别或实体框架级别维护事务是否好。 2) 什么应该是编码风格 现

如何使用entity-framewrok-4在事务中插入数据

我有一个order对象,它还有其他集合,我需要在事务中插入到数据库中

cOrder->
 ->lstOrderItems
   -->lstDressing, lstTopping, lstspecialInstruction
 ->userDetails
 ->trasactionTblsdetails
还需要以下意见:- 1) 在数据库级别或实体框架级别维护事务是否好。 2) 什么应该是编码风格

现在我是这样做的,但是我可以预测它需要很多代码,但是我想知道这只是它的工作方式或者更好的解决方案

public static void SaveOrder()
    {
        using (EposWebOrderEntities Ctx = new EposWebOrderEntities())
        {
            using (TransactionScope scope = new TransactionScope())
            {

                // do something...
                Ctx.order.SaveChanges();
                // do something...
                //foreach to save the order items to databaswe
                Ctx.orderitems.SaveChanges();
                // do something...
                //foreach to save in dressing tbl
                Ctx.dressing.SaveChanges();
                //foreach to save in topping tbl
                Ctx.topping.SaveChanges();
                //foreach to save in dressing tbl
                Ctx.dressing.SaveChanges();
                //foreach to save in spinst tbl
                Ctx.dressing.SaveChanges();
                scope.Complete();
                success = true;
            }
        }
    }

这样使用它。在大多数情况下都足够了

public static void SaveOrder()
    {
        using (EposWebOrderEntities Ctx = new EposWebOrderEntities())
        {
             Ctx.Entry<Order>(order).State = EntityState.Added;
             Ctx.Entry<Dressing>(dressing).State = EntityState.Added;
             Ctx.SaveChanges();

        }
    }
publicstaticvoidsaveorder()
{
使用(EposWebOrderEntities Ctx=new EposWebOrderEntities())
{
Ctx.Entry(order).State=EntityState.Added;
Ctx.Entry(敷料).State=EntityState.Added;
Ctx.SaveChanges();
}
}

在Entity Framework的所有版本中,每当您在数据库上执行SaveChanges()以插入、更新或删除>,框架都会将该操作包装到事务中。此事务只持续>足够长的时间来执行操作,然后完成。当您执行另一个这样的>操作时,将启动一个新事务


表没有SaveChanges方法。我也不清楚你在问什么。有什么具体问题吗?虽然这是真的,但它不会将任何其他内容包装在一个tran中,例如reads或多个SaveChanges调用。不太一般。对于中的集合,不需要使用for each读取每个对象并将其推送到数据库。它将起作用。。