如何在一个公共类中对许多数据服务的许多实体进行过滤?

时间:2010-10-18 07:08:47

标签: entity-framework wcf-data-services

Tier数据库和每个表都有一个DataSetId,我绝对想确保数据总是正确分区。

目前我正在使用QueryInterceptor属性,但它很混乱且过于重复且容易出错。一些新的Dev可以添加一个新表,忘记按DataSetId过滤,或者只是重命名一个表。所以我把它放在基类中,但我的存储库的IQuerable属性永远不会被调用。

我有一个继承自ObjectContext的“CoreRepository”类,我的每个IQueryable集合都使用“CoreObjectSet”。 CoreObjectSet通过始终添加一个表达式来按DataSetId进行过滤来扩展ObjectSet。直接使用时这很好用。但是,当用于DataService时,DataService上的集合的Get访问器永远不会被DataService调用。它似乎是作弊而根本不使用它们并直接访问数据。

有没有办法让DataService正确地通过存储库类访问(并且仍然可以获得以SQL身份传递查询的效率)?

如果这是行为,为什么即使不使用该类,甚至还要使T的DataService?对于ADO团队来说,忽略它并直接使用edmx似乎是一个黑客。

由于 亚伦

1 个答案:

答案 0 :(得分:0)

看起来唯一的方法是使用T4模板生成DataService。我更喜欢基类或某种可重用的处理程序,但ADO在这里别无选择。