2008-10-17 95 views
4

我真的很喜歡Entity Framework,但有一些關鍵部分對我來說是一個挑戰。任何人都可以告訴我如何過濾關聯列上的EntityDataSource? EF隱藏FK值,而是具有Association屬性。給定一個實體,人,有PersonType協會,我本來期望這樣的工作,如果我想按類型來過濾我的Person實體:過濾關聯值的EntityDataSource

GridDataSource.EntityTypeFilter = "it.PersonType.PersonTypeID = 1"; 

GridDataSource.Where = "it.PersonType.PersonTypeID = '1'"; 

甚至

GridDataSource.WhereParameters.Add(new Parameter("it.PersonType.PersonTypeID", DbType.Object, "1")); 

但沒有一項工作。任何人都知道如何做到這一點?

回答

1

我認爲你正在尋找的答案涉及使用包含方法,如:

entities.it.Include("PersonType").Where(a => a.PersonType.PersonTypeID = '1'); 
+1

這看起來很有希望。我必須爲此設置另一個測試,因爲在挫折中,我們將EF拉出並放入L2S。替換了6周左右EF在L2S中的一天拉動 – jlembke 2009-03-24 23:13:33

0

您是否嘗試過在內存中使用LINQ應用過濾器? (或對數據庫也許?)

var personType = new PersonType { Id = 1 }; 
var query = PersonDataSource.Where(p => p.PersonType.Equals(personType)); 
// use this query as the DataSource for your GridView 

我必須承認我沒有做過這樣的事,但我用這種伎倆來更新/不首先加載關聯的實體創建一個實體。