[英]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.