2011-12-17 47 views
0

對於Winforms C#應用程序,我正在查找數據集的tableAdapter.Fill/tableAdapter.FillByBy的EF等效項。實體框架等效於數據集的表格Adapter.FillBy

因爲它們可重複使用來重新填充GridView(Windforms),可能使用不同的where子句。

我知道填寫的唯一方法/填充現在用EF使用不同的參數從DB在GridView:

this.myBindingSource.DataSource = myNewSelectQueryObject; 

「第一補」這個工作正常,但第二個將導致數據源等GirdView無法編輯。 (雖然GridView的BindingSource不是「只讀」的。)a,d EF.Refresh()似乎沒有更新可能存在於數據庫但不存在於'EF'中的記錄。

謝謝你的幫助。

PS:這裏是迄今爲止取得了一些進展:

this.myRadGridView.MasterTemplate.DataSource = this.myBindingSource.DataSource; 

不知道這是否是有用的:

Refill(){ 
this.myDataEntities.Refresh(System.Data.Objects.RefreshMode.StoreWins, this.myDataEntities.myEntity); 
this.myBindingSource.DataSource = myNewObjectQuery<...>; 
this.myRadGridView.DataSource = this.myBindingSource.DataSource; 
} 

optionnally。

RadGridView不再是'顯然只讀'。

但是,我想通過我的BindingSource添加一條記錄: this.myBindingSource.AddNew(); 它沒有出現在我的RadGridView中。 雖然我仍然可以添加一條記錄並通過點擊使用RadGridView中的'點擊此處添加新行'工具來保存它。

因此,BindingSource和網格之間存在一些不匹配。

回答

0

看來,解決辦法是做這樣的事情:

Refill(){ 
this.myDataEntities.Refresh(System.Data.Objects.RefreshMode.StoreWins, this.myDataEntities.myEntity); 
this.myBindingSource = new BindingSource(); 
this.myBindingSource.DataSource = myNewObjectQuery<...>; 
this.myRadGridView.DataSource = this.myBindingSource; 

}

的重要區別是 「新的BindingSource()」。