簡體   English   中英

如何使用實體框架作為 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

我嘗試傳遞DataTableDataSetList - 但沒有運氣......我的問題是我想使用存儲庫模式並創建一個通用存儲庫類,它可以與我的數據庫中的不同表一起使用。

這是我第一次嘗試編寫存儲庫模式代碼並使用泛型類型。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM