在不同的 using-statment

问题描述

我已经创建了一个一次性类 UnitOfWOrk,它也将用作可选参数,我在下面提供了一个示例。

public async Task CallPersistItemPassUoW()
{
    using (var unitOfWork = new UnitOfWork(_connectionString,openTransaction: true))
    {
        try
        {
            await PersistItem(25,unitOfWork);
            unitOfWork.Transaction.Commit();
        }
        catch (Exception)
        {
            unitOfWork.Transaction.Rollback();
        }
    }
}

public async Task CallPersistItem()
{
    await PersistItem(30);
}

public static async Task PersistItem(int itemId,UnitOfWork ouw = null)
{
    using (var unitOfWork = ouw ?? new UnitOfWork(_connectionString))
    {
        await unitOfWork.Connection.ExecuteScalarAsync(
            "insert into [dbo].[ItemTable](ItemId) values(@ItemId)",new
            {
                ItemId = itemId
            },unitOfWork.Transaction);
    }
}

如您所见,CallPersistItemPassUoW 和 CallPersistItem 方法都调用了 PersistItem 方法。 CallPersistItemPassUoW 传递一个使用过的 UnitOfWork,而 CallPersisItem 不传递任何东西。如果参数 ouw(在方法 PersistItem 中)没有值,则在 using-statment 中使用 UnitofWork 的新实例,否则在 using-stamtent 中使用该参数。这意味着同一个 UnitOfWork 实例可以被使用两次,在这种情况下这是一个问题吗?如果 CallPersistItemPassUoW 将调用 PersistItem,UnitOfWork 的实例是否会在 CallPersistItemPassUoW 或 PersistItem 中处理?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)