4

我真的很喜欢 Entity Framework,但有一些关键部分对我来说是一个挑战。谁能告诉我如何过滤关联列上的 EntityDataSource ?EF 隐藏了 FK 值,而是有一个 Association 属性。给定一个具有 PersonType 关联的实体 Person,如果我想按类型过滤我的 Person 实体,我会期望这样的事情:

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

或者

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

甚至

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

但这些都不起作用。有人知道怎么做吗?

4

2 回答 2

1

我认为您正在寻找的答案涉及使用 Include 方法,例如:

entities.it.Include("PersonType").Where(a => a.PersonType.PersonTypeID = '1');
于 2009-03-23T19:02:14.793 回答
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

我必须承认我没有做过这样的事情,但我已经使用这个技巧来更新/创建一个实体,而无需先加载关联的实体。

于 2009-03-12T15:58:22.727 回答