我们能在C#对象上使用事务吗?
所有的事务都只能用于关系型数据库,如MSSQL、ORACLE等吗?
谢谢。
您可能对软件事务性内存感兴趣。在.NET世界中有一个实现,名为STM.NET。
软件事务性内存(STM.NET)是一种有效隔离共享状态的机制。程序员将代码区域划分为在事务内运行的"原子"和"隔离"于同时运行的其他交易代码。
这是微软STM.NET团队的博客:http://blogs.msdn.com/stmteam/
看看软件事务内存(STM.NET)。
它没有被纳入 .Net 4,但可以作为单独的下载使用。
看起来微软已经放弃了stm。一些原因在这里给出https://www.infoq.com/news/2010/05/STM-Dropped,尽管我对其弱原子性的就地修改论点还没有完全信服。我认为一个强原子事务,在其中所有对象状态必须位于事务内仍然具有价值。
对于C#对象,没有类似SQL的事务处理,但如果这是由于线程问题,您应该使用lock
:
lock (myList)
{
if (myList.Count > 0)
myList.Clear();
}
这只是清除一个列表,但确保在同一时间其他线程无法修改它。
TransactionScope Class
。