当前位置: 代码迷 >> C# >> winform 调用 Nhibernate 测试有关问题
  详细解决方案

winform 调用 Nhibernate 测试有关问题

热度:89   发布时间:2016-05-05 04:42:08.0
winform 调用 Nhibernate 测试问题

问题:winform 调用nhibernate测试结果,为什么前几秒非常快,后边开始效率就明显下降了?

场景说明如下:
1、起了100个线程
            for (int i = 0; i < 100;i++ )                     /////30个线程也测试过
            { 
                TestInsertThead instance1 = new TestInsertThead();
                Thread t = new Thread(instance1.Go2);
                t.Start();
                Console.WriteLine("------------------>" + i);
            }
2、每个线程中循环添加记录。
            for (int i = 0; i < 10000; i++)
            {
                DataAccess da = new DataAccess();
                Action doAction = delegate()
                {
                    Userinfo newUser = new Userinfo();
                    //newUser.Id = Int32.Parse(textBoxX_id_userinfo.Text);
                    newUser.Imsi = "111111111111111";
                    newUser.Imei = "22222222222222";
                    da.Insert(newUser);
                };
                da.Transaction(doAction);//////这里代码实现如下面给出的。
                Thread.Sleep(1);
            }

===============Transaction======================
        public void Transaction(Action action)
        {
            ITransaction transaction = session.BeginTransaction();
            try
            {
                action();
                transaction.Commit();
                session.Close();
            }
            catch
            {
                transaction.Rollback();
                session.Close();
                throw;
            }
        }

===============session管理的机制说明======================
每次new一个DataAccess对象,都会factory.OpenSession();来打开一个session。
每次 da.Transaction都会关闭打开的这个session。

------解决思路----------------------
一般都是单例模式创建Session的吧

这么做你想得到什么结果,你的电脑一次可以运行几个session?才会开始排列么
  相关解决方案