![](/img/trans.png)
[英]What is the correct way to use Entity Framework as datasource for DataGridView?
[英]How to use Entity Framework as generic DataSource for DataGridView?
我正在嘗試制作采用通用DataSource
並顯示數據的DataGridView
表單。
我無法讓數據綁定工作:
EntityFramework.dll 中發生類型為“System.NotSupportedException”的未處理異常
附加信息:不支持直接綁定到商店查詢(DbSet、DbQuery、DbSqlQuery、DbRawSqlQuery)的數據。 而是使用數據填充 DbSet,例如通過在 DbSet 上調用 Load,然后綁定到本地數據。 對於 WPF 綁定到 DbSet.Local。 對於 WinForms 綁定到 DbSet.Local.ToBindingList()。 對於 ASP.NET WebForms,您可以綁定到對查詢調用 ToList() 的結果或使用模型綁定,有關詳細信息,請參閱http://go.microsoft.com/fwlink/?LinkId=389592 。
我嘗試傳遞DataTable
、 DataSet
和List
- 但沒有運氣......我的問題是我想使用存儲庫模式並創建一個通用存儲庫類,它可以與我的數據庫中的不同表一起使用。
這是我第一次嘗試編寫存儲庫模式代碼並使用泛型類型。
public DataGridForm(IEnumerable<???> source) // TEntity or T can't be recognized by VisualStudio as a type!
{
InitializeComponent();
// TODO: Complete member initialization
this.bindingSource.DataSource = source;
}
我很難把這個簡單化。 請有關如何實現這一目標的任何指導方針?
我稱這個方法為:
public IEnumerable<TEntity> GetAll()
{
return Context.Set<TEntity>().ToList();
}
我知道這是一個沉重的問題,但我需要某種方式的幫助
~陳馳
更新:接受的答案沒有問題,真正的問題是我的 AutoGenerateColumns 屬性默認設置為false !
dataGridView.AutoGenerateColumns = true;
通過代碼隱藏將其設置為 true 使一切正常......我在屬性窗口中尋找此屬性但找不到它?! 也許某種我不知道的 Visual Studio 錯誤......
BindingSource
DataSource
屬性接受object
。 因此,將數據作為object
傳遞給表單的構造函數就足夠了:
public DataGridForm(object source)
{
InitializeComponent();
// TODO: Complete member initialization
this.bindingSource.DataSource = source;
}
對於運行時數據綁定,您不需要類型。 但是出於任何原因,如果您想將IEnumerable<T>
傳遞給表單,則表單應該是DataGridForm<T>
,它在設計器中有其副作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.