在第二个线程中添加新项目 - 无更改

时间:2014-06-17 08:23:00

标签: c# entity-framework thread-safety

我尝试使用Entity Framework将新项目添加到我的数据库中,但在使用SaveChanges()后,我没有在数据库中拥有此项目。

我的程序中有2个线程,并且始终使用using语句在数据库中执行某些操作。 (我读过这是线程安全的)。

来自表的数据正在数据网格视图中显示,我可以在添加后看到新项目,但在关闭Visual Studio后,所有更改都会消失(数据库中没有更改)。

我添加新项目的代码:

    using (var context = new dbEntities())
        {
                Operation myOperation = new Operation { DateTime = DateTime.Now, DelayTime = 10, RepeatCount = 10, RepeatTime = 10, Type = 10, DayOfWeek = 9999999 };
                context.Operation.Add(myOperation);
                context.SaveChanges();               
        }   

这是基本的,应该可行,但我不知道为什么它不起作用。你能帮我解决这个问题吗?

绑定数据:

     List<Operation> myListOfOperation = new List<Operation>();
        using (var myDb= new dbEntities())
        {
            myListOfOperation = myDb.Operation.ToList();
        }

        m_GridView.Items.Clear();
        foreach (var myTempTask in myListOfOperation)
        {
            m_GridView.Items.Add(myTempTask);
        }

我在MainWindow构造函数中创建新对象并在此构造函数中运行新线程。 线程中的功能:

    while (true)
        {
            if (m_OperationInQueue.Count == 0)
            {
                UpdateQueue();
            }
            else if (m_GenerateQueue == true)
            {
                System.Threading.Thread.Sleep(5 * 1000);
            }
            else
            {
                TimeSpan myTimeToWait = m_OperationInQueue.First().DateTime - DateTime.Now;
                if (myTimeToWait.TotalMinutes < 0)
                {
                    DoOperation(m_OperationInQueue.First());
                    m_OperationInQueue.RemoveAt(0);
                }
                else if (myTimeToWait.TotalMinutes > 5)
                {
                    Thread.Sleep(4 * 60 * 1000);
                }
                else
                {
                    Thread.Sleep(myTimeToWait);
                    DoOperation(m_OperationInQueue.First());
                    m_OperationInQueue.RemoveAt(0);
                }
            }
        }

我尝试在DoOperation功能中添加新项目

0 个答案:

没有答案