2008-10-17 80 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 

我必须承认我没有做过这样的事,但我用这种伎俩来更新/不首先加载关联的实体创建一个实体。

相关问题