我一直在使用TransactionScope来处理数据库,感觉还不错.我正在寻找的是以下内容:
using(var scope=new TransactionScope())
{
// Do something with a few files...
scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用 - 如果有20个文件,并且第9个文件发生异常,所有之前的8个仍然保持更改而其余的保持不变 - 不执行回滚.那么,为文件实现类似范围的行为的最佳方法是什么?
我希望有一个简单的答案,但如果没有,你能给我一些指示,或者指点我的相关文章吗?
我有这个方法(简化):
void DoSomething(IEnumerable<int> numbers);
Run Code Online (Sandbox Code Playgroud)
我这样调用它:
DoSomething(condition==true?results:new List<int>());
Run Code Online (Sandbox Code Playgroud)
该变量results由LINQ选择条件(IEnumerable)形成.
我想知道这List<int>()是通过空集合的最佳方式(最快吗?),还是new int[0]更好?或者,其他东西会更快Collection,等等?在我的例子null中不行.
我有这样的事情:
void MethodToBreak()
{
// do something
if(something)
{
MethodThatBreaks();
return;
}
// do something
}
void MethodThatBreaks()
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
所以,我想知道:是否有可能打破执行:MethodThatBreaks()?然后,我会:if(something) MethodThatBreaks();如果内部条件if为真,那么该行之后就不会执行任何操作.
注意:else在这种情况下我知道这是可能的,但我不希望这样.
这是我拥有的代码的简化部分:
abstract class DataManager<TValue>
{
protected static Dictionary<string, TValue> Values;
}
Run Code Online (Sandbox Code Playgroud)
然后我有:
class TextManager : DataManager<string>
{
static TextManager()
{
Values = ... // Fill with data
}
}
Run Code Online (Sandbox Code Playgroud)
而且,现在我得到了 CA1810。我看到了一些解决方案,比如Values将它们公开并在其他地方设置,但我不喜欢那样,或者创建一个静态方法TextManager来做同样的事情,但在程序启动时被调用,但我也不喜欢那样.
我认为从示例中可以明显Values看出,每个TValue. 那么,您认为这里的最佳解决方案是什么?
我有一个类在其私有字段中预加载一些值,这些字段用于进一步的计算.
我感兴趣从这一点上来说,如何安全是一个数据-如何轻松地能不能被黑客通过内存筛选等访问完善这里的情况是这只是所谓的公共方法Class.CalculateSomething()将能够访问这些领域并返回结果.
知道这可能是不可能的,有没有办法增加这些领域的安全性,主要是数字和字符串?
有一个查询,它做这样的事情:
select * from cars c where c.WheelCount > 0 or CountWheels(c) > 0
Run Code Online (Sandbox Code Playgroud)
该函数是CountWheels为每一行调用,还是只为那些行调用t.Count <= 0?
问题是该函数包含每次都应该执行的逻辑——很可能是一个糟糕的设计;这是我几乎无法控制的代码的一部分。
这是一个简化的例子,我不能只写,select * from cars c where CountWheels(c.Body) > 0因为这会删除一些数据。把它想象成:给我所有曾经有轮子的汽车,即使其中一些现在可能有 0 个轮子。
c# ×5
abstract ×1
break ×1
case ×1
class ×1
constructor ×1
execution ×1
field ×1
file ×1
generics ×1
ienumerable ×1
inheritance ×1
methods ×1
oracle ×1
private ×1
return ×1
scope ×1
sql ×1
sql-function ×1
static ×1
transactions ×1
where-clause ×1