【发布时间】:2016-03-06 00:14:47
【问题描述】:
我正在编写一个 Web API Rest 服务,该服务对一组不同的实体进行操作。我把它们分解成这样:
db = new DBEntities();
using (var dbContextTransaction = db.Database.BeginTransaction())
{
try
{
ProcessClient();
ProcessClientPerson();
ProcessGuardian();
ProcessAddress();
ProcessEmail();
ProcessPhones();
ProcessChildren();
dbContextTransaction.Commit();
}
catch (Exception ex)
{
dbContextTransaction.Rollback();
etc.
根据数据上下文应尽可能短的建议,每个方法创建自己的数据上下文,调用 SaveChanges(),并在最后处理它:
private ProcessClient()
{
db = new DBEntities();
....
这显然不起作用 - 以这种方式创建的事务上下文与数据上下文相关联。如果实体操作之一出现问题,则仅回滚该操作(隐式),但总体事务不会。
我找到了这个approach for creating a transaction outside of EF,但我想知道是否应该遵循它,或者我是否应该让我的数据上下文在事务期间存在并将事务保留在 EF 中!?
我不是在寻找意见,而是在寻找有关稳定性、性能等方面的数据。
【问题讨论】:
标签: c# entity-framework asp.net-web-api transactions