C# 建立实体框架实体添加&;Net存储过程一起插入到单个事务中

C# 建立实体框架实体添加&;Net存储过程一起插入到单个事务中,c#,ado.net,entity-framework-5,ado.net-entity-data-model,C#,Ado.net,Entity Framework 5,Ado.net Entity Data Model,我有一个应用程序,使用实体框架或处理数据库表中的数据。有一个主表,CUSTOMER,它通过外键链接到其他三个表。链接表是 RENTAL PAYMENTS VEHICLES 我能够使用EF在所有这4个表上添加/编辑/删除实体 我想将当前场景(EF用于处理所有DB事务)更改为类似的内容 创建新实体后,以及尝试保存实体时(5个新实体) 实体/记录)返回数据库,我想使用存储 将新实体添加到车辆模型并使用EF保存的步骤 实体到所有其他模型,并且仍然将所有这些放在一个模型下 单一交易 另外,我必须等到EF

我有一个应用程序,使用实体框架或处理数据库表中的数据。有一个主表,
CUSTOMER
,它通过外键链接到其他三个表。链接表是

RENTAL
PAYMENTS
VEHICLES
我能够使用EF在所有这4个表上添加/编辑/删除实体

我想将当前场景(EF用于处理所有DB事务)更改为类似的内容

创建新实体后,以及尝试保存实体时(5个新实体) 实体/记录)返回数据库,我想使用存储 将新实体添加到
车辆
模型并使用EF保存的步骤 实体到所有其他模型,并且仍然将所有这些放在一个模型下 单一交易

另外,我必须等到EF调用完成,因为我需要 作为EF保存的一部分创建的新
CUSTOMER\u ID
将作为 将参数输入存储过程以保存车辆实体

我不想从事务外部调用存储过程,因此如果存储过程调用失败,通过EF对数据库所做的更改也会回滚

有人知道如何实现这一目标吗

PS:不寻找任何代码示例;高层次的说明会有所帮助

我正在使用Entity Framework 5、.Net v4.5,VS 2013、Oracle 11g、ODP.Net将存储过程映射到实体 1) 创建存储过程 2) 更新数据模型以包括存储过程 -通过EF 6.x“从数据库更新模型”菜单

3) 然后在实体数据模型中查找实体(或创建新实体),并连接存储的过程以插入、更新和删除函数 -右键单击实体并选择“存储过程映射”菜单

4) 使用LinqToEntity添加/修改数据库中的实体。BeginTransaction() 然后对上下文调用SaveChanges(),然后提交或回滚

注意:从EF6数据库开始。默认情况下,ExecuteSqlCommand()将在事务中包装该命令(如果还没有)。此方法的重载允许您根据需要重写此行为。此外,在EF6中,通过ObjectContext.ExecuteFunction()等API执行模型中包含的存储过程也会执行相同的操作(除了目前无法覆盖默认行为)。无论哪种情况,事务的隔离级别都是数据库提供程序认为其默认设置的隔离级别。例如,默认情况下,在SQL Server上,这是读提交的。

事务作用域可以工作吗?为什么不在存储过程中完成所有工作?这个新表是最近添加的,应用程序已经完全使用EF和重写构建,而目前还不可行。由于这些表包含大量数据,并且加载所有数据已经花费了太多时间,因此我们不希望将这个新表也添加到加载过程中。