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

C# 在第二个线程中添加新项目-无更改,c#,entity-framework,thread-safety,C#,Entity Framework,Thread Safety,我尝试使用Entity Framework将新项添加到数据库中,但使用SaveChanges()后,数据库中没有此项 我的程序中有两个线程,总是使用using语句在数据库中执行一些操作。(我已经读到了线程安全) 表中的数据显示在数据网格视图中,添加后我可以看到新项目,但关闭Visual Studio后所有更改都消失(数据库中没有更改) 添加新项目的我的代码: using (var context = new dbEntities()) {

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

我的程序中有两个线程,总是使用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);
        }
List mylistofooperation=new List();
使用(var myDb=new dbEntities())
{
mylistofooperation=myDb.Operation.ToList();
}
m_GridView.Items.Clear();
foreach(mylistofooperation中的var mytestask)
{
m_GridView.Items.Add(mytestask);
}
我在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);
                }
            }
        }
while(true)
{
如果(m_OperationQueue.Count==0)
{
UpdateQueue();
}
else if(m_GenerateQueue==true)
{
系统线程线程睡眠(5*1000);
}
其他的
{
TimeSpan myTimeToWait=m_OperationInQueue.First().DateTime-DateTime.Now;
如果(myTimeToWait.TotalMinutes<0)
{
DoOperation(m_operationQueue.First());
m_OperationQueue.RemoveAt(0);
}
否则如果(myTimeToWait.TotalMinutes>5)
{
线程睡眠(4*60*1000);
}
其他的
{
线程。睡眠(myTimeToWait);
DoOperation(m_operationQueue.First());
m_OperationQueue.RemoveAt(0);
}
}
}

我尝试在DoOperation Function中添加新项

这是与多线程相关还是STA中也出现不持久化?您需要更多详细信息-您提到了多线程,但没有提供代码示例说明这是如何适应的,或者您是如何绑定网格的。抱歉,我添加了这个细节。你确定你的数据库在执行之间没有被删除和创建吗?是的,我确定。如果重要的话,我正在使用本地数据库(.sdf)。