当前位置: 首页>>代码示例>>C#>>正文


C# TransactionManager.CommitAll方法代码示例

本文整理汇总了C#中TransactionManager.CommitAll方法的典型用法代码示例。如果您正苦于以下问题:C# TransactionManager.CommitAll方法的具体用法?C# TransactionManager.CommitAll怎么用?C# TransactionManager.CommitAll使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TransactionManager的用法示例。


在下文中一共展示了TransactionManager.CommitAll方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: TransactionManagerCommitsAll

        public void TransactionManagerCommitsAll()
        {
            var seed = new Seed32();
            var hits = 0;

            using (var manager = new TransactionManager<int, MockClassA>() )
            {
                manager.TransactionCommitted += new TransactionCommit<int, MockClassA>
                    (delegate(ITransaction<int, MockClassA> transaction)
                    {
                        Assert.AreEqual(3, transaction.GetEnlistedActions().Count());
                        hits++;

                        transaction.MarkComplete();
                    });

                var testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList();
                testEntities.ForEach(e => e.Id = seed.Increment());

                using (var tLock1 = manager.BeginTransaction())
                {
                    foreach (var entity in testEntities)
                        tLock1.Transaction.Enlist(Action.Create, entity.Id, entity);

                    using (var tLock2 = manager.BeginTransaction())
                    {
                        testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList();
                        testEntities.ForEach(e => e.Id = seed.Increment());

                        foreach (var entity in testEntities)
                            tLock2.Transaction.Enlist(Action.Create, entity.Id, entity);

                        using (var tLock3 = manager.BeginTransaction())
                        {
                            testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList();
                            testEntities.ForEach(e => e.Id = seed.Increment());

                            foreach (var entity in testEntities)
                                tLock3.Transaction.Enlist(Action.Create, entity.Id, entity);

                            using (var tLock4 = manager.BeginTransaction())
                            {
                                testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList();
                                testEntities.ForEach(e => e.Id = seed.Increment());

                                foreach (var entity in testEntities)
                                    tLock4.Transaction.Enlist(Action.Create, entity.Id, entity);

                                using (var tLock5 = manager.BeginTransaction())
                                {
                                    testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList();
                                    testEntities.ForEach(e => e.Id = seed.Increment());

                                    foreach (var entity in testEntities)
                                        tLock5.Transaction.Enlist(Action.Create, entity.Id, entity);

                                    Assert.AreEqual(3, manager.GetActiveItems().Count);

                                    manager.CommitAll(true);

                                    Assert.IsTrue(tLock5.Transaction.IsComplete);
                                }
                            }
                        }
                    }
                }

                Assert.AreEqual(0, manager.GetActiveItems().Count);
            }
        }
开发者ID:thehexgod,项目名称:BESSY-DB,代码行数:70,代码来源:TransactionManagerTests.cs

示例2: TransactionManagerCommitAllCommitsAllTransactions

        public void TransactionManagerCommitAllCommitsAllTransactions()
        {
            var sync = new object();
            var seed = new Seed32();
            var hits = 0;

            using (var manager = new TransactionManager<int, MockClassA>())
            {
                manager.TransactionCommitted += new TransactionCommit<int, MockClassA>
                    (delegate(ITransaction<int, MockClassA> transaction)
                    {
                        Assert.AreEqual(3, transaction.GetEnlistedActions().Count());
                        hits++;

                        transaction.MarkComplete();
                    });

                var transList = new List<TransactionLock<int, MockClassA>>();

                Parallel.For(0, 5, delegate(int i)
                {
                    var testEntities = TestResourceFactory.GetMockClassAObjects(3).ToList();
                    testEntities.ForEach(e => e.Id = seed.Increment());

                    var trans = manager.BeginTransaction();

                    foreach (var entity in testEntities)
                        trans.Transaction.Enlist(Action.Create, entity.Id, entity);

                    if (i == 1)
                    {
                        lock (sync)
                            transList.Add(trans);

                        Assert.AreEqual(3, manager.GetCached().Count());
                    }
                    else
                        trans.Transaction.Commit();

                });

                manager.CommitAll(true);

                Assert.AreEqual(0, manager.GetCached().Count());
            }

            Assert.AreEqual(5, hits);
        }
开发者ID:thehexgod,项目名称:BESSY-DB,代码行数:48,代码来源:TransactionManagerTests.cs


注:本文中的TransactionManager.CommitAll方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。