2014-05-05 52 views
0

我在backgroundworker中使用LINQ查詢。當我運行程序並執行查詢時,它可以正常工作。但是當我手動更改表中的值並再次運行查詢時,這會返回最後一個結果給我,我應該關閉該程序並再次運行以查看更改!LINQ到SQL和後臺工作人員

請幫我解決這個問題。

clockEntities objDb = new clockEntities(); 
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) 
{ 
     var inOutList = (from may in objDb.Taradods 
     where may.Date.Contains("2014/02") && may.BarCodeNo == 8011 
     select may); 
     this.Invoke(new MethodInvoker(delegate() { 
      dataGridView1.DataSource = inOutList.ToList(); })); 
} 
+0

檢查[如何清除了LINQ DataContext的高速緩存,以SQL](HTTP:/ /stackoverflow.com/questions/2098143/how-to-clear-the-datacontext-cache-on-linq-to-sql) –

+0

我嘗試它,但我不能使用這種方法,因爲當我寫「objDb」。刷新方法不顯示在contexmenu中。我將system.data.linq,system.data.objects和System.Data.Entity添加到我的項目 – user3603056

+0

.Net的版本是什麼? –

回答

0

您的datacontext已過時。將構造移動到DoWork中,無論如何,Datacontext的構造非常輕巧,所以它不會對性能造成太大的影響。

私人無效backgroundWorker2_DoWork(對象發件人,DoWorkEventArgs> E)
{

==> Move it here  clockEntities objDb = new clockEntities(); 

    var inOutList = (from may in objDb.Taradods 
    where may.Date.Contains("2014/02") && may.BarCodeNo == 8011 
    select may); 
    this.Invoke(new MethodInvoker(delegate() { 
     dataGridView1.DataSource = inOutList.ToList(); })); 

}