簡體   English   中英

實體框架綁定到DataGrid wpf麻煩

[英]Entity framework Binding to DataGrid wpf trouble

我用實體連接到DataBase: Entity db = new Entity(); ...然后我將DataGrid添加到Form並嘗試從我的DataBase中重新獲取表

var pp = from asd in db.ABONENT select asd;

MyDataGrid.ItemsSource = pp.ToList();

結果如下: 截圖

它顯示其他鏈接表中的其他字段,為什么? 如何僅顯示ABONENT表中的數據?

我的猜測是你使用DataGrid來顯示所有表的內容。 您是列定義靜態還是動態加載?

如果它是動態的,我建議刪除每個數據綁定之間的所有列。

如果它是靜態的,則隱藏您不想顯示的列(Visible = false)。

在實體框架中,您有Entities ,而不是Tables 實體框架將表的關系概念抽象為您在應用程序中使用的對象。 這就是ORM的作用。

因此,表之間的關系表示為實體中所謂的Navigation Property ,它基本上是實體類中表示關聯實體的屬性。

我的觀點是..如果您打算將表直接暴露給UI,為什么要使用ORM? 使用普通的舊ADO.Net,或以其他方式定義UI,使您不將整個表直接暴露給用戶。 用戶對表格一無所知。 用戶了解他們的業務。 因此,您的應用程序應該對表格一無所知

從UX的角度來看,我認為這是一個不好的做法,例如,為什么用戶應該在其UI中看到Id列,例如abonentID和RegionID? 他們不關心這一點,他們也不理解。 行ID是RDBMS概念,而不是業務概念。

我的建議:重新思考你的方法:要么回退到使用普通的舊ADO.Net,要么在DataGrid中將AutoGenerateColumns設置為false,並只公開用戶關心的列。

您可以使用以下語法選擇實體的公開屬性:

var pp = from asd in db.Products
            select new
            {
                asd.Id,
                asd.Name,
                ProductCategory = asd.ProductCategory.Name,
            };
MyDataGrid.ItemsSource = pp.ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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