关键字“仅在条件成立的情况下使用”

小狗

我与类编码Transaction为.NET和在这个具体的方法我只想重新实例Transaction来说,如果它不是已经实例。下面是与某些实体框架方法一起完成的示例。

if (Transaction.Current != null)
{
    using (var transaction = CreateTransaction())
    {
        _dbSet.Attach(item);
        _dbSet.Remove(item);
        _context.SaveChanges();
        transaction.Complete();
    }
}
else
{
    _dbSet.Attach(item);
    _dbSet.Remove(item);
    _context.SaveChanges();
}

我想知道是否有一种更聪明的方法仅在using上述条件成立的情况下才使用-line。我不喜欢重复相同的代码两次。

亚历克斯

从技术上讲,您可以编写类似以下内容(因为如果transactionnull,则不会由于的结果而发生自动处置using,请参见http://msdn.microsoft.com/zh-cn//library/yh598w02.aspx):

using (var transaction = Transaction.Current == null ? CreateTransaction() : null)
{
    _dbSet.Attach(item);
    _dbSet.Remove(item);
    _context.SaveChanges();
    if(transaction != null)
        transaction.Complete();
}

(我不确定该检查。在原始代码中Transaction.Current != null,但是Transaction.Current == null看起来更合逻辑。)

但我会考虑只是分组

_dbSet.Attach(item);
_dbSet.Remove(item);
_context.SaveChanges();

变成一个单独的功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

仅在相应列不包含所选关键字的情况下选择那些行

是否可以在不使用“ new”关键字的情况下使用Javascript原型?

可以在不提供默认值的情况下使用关键字参数吗?

如何在不使用不同关键字的情况下提高以下查询的性能

在什么情况下使用MySQL关键字“ one”?

在不使用class关键字的情况下创建自定义元素

在不使用new关键字的情况下构建结构时会发生什么?

如何在不使用“ new”关键字的情况下启动课程?

在不使用 final 关键字的情况下制作变量常量

如何在不使用final关键字的情况下用Java创建不可变的类

如何在不使用 DISTINCT 关键字的情况下获取 mysql 中不同行的计数

如何在不使用 extends 关键字的情况下从另一个类访问方法?

如何在不使用关键字“ any”的情况下修复打字稿中错放的类型

在没有别名的情况下可以在别名中使用SQL的“ AS”关键字有什么意义?

在Java中是否可以在不使用关键字“ implements”的情况下实现接口及其方法?

什么时候使用await关键字?在这种情况下我需要它吗?

如何在不将函数作为道具传递或使用 export 关键字的情况下导出函数?

为什么在这两种情况下此引用的关键字不同?

没有“ function”关键字的情况下,此对象方法定义如何工作?

在这种情况下,我与箭头功能中的“ this”关键字混淆

如何在不禁止Google的情况下搜索关键字?

默认情况下,如何在Visual Studio 2015中激活ByVal关键字的插入?

在什么情况下C#'is'关键字可以引发异常?

此关键字在这种情况下适用于什么

Typescript-在没有static关键字的情况下继承静态属性

T-SQL:在这种情况下,AS关键字是什么意思?

ORA-00905:在where子句之后的情况下缺少关键字错误

在这种情况下是否不需要关键字“typename”和“template”?

我可以在动态知道其类型的模板类对象中使用 auto 关键字吗?我不能在没有初始化程序的情况下使用 auto 关键字吗?