Entity framework 实体框架中不使用WCF数据服务的查询拦截器

Entity framework 实体框架中不使用WCF数据服务的查询拦截器,entity-framework,Entity Framework,我使用EF4.1代码优先的方法。我不希望使用WCF数据服务。我仍然可以实现查询拦截器吗?任何关于这方面的建议都将不胜感激。谢谢 No-EF根本不提供查询拦截器。这纯粹是WCF数据服务的补充。您必须为这种逻辑实现自己的基础架构,但我怀疑它在全球范围内是否可行 您可以在您的上下文中执行以下操作: public IQueryable<Client> ClientsQuery(IPrincipal principal) { if (prinicipal.IsInRole("Admin

我使用EF4.1代码优先的方法。我不希望使用WCF数据服务。我仍然可以实现查询拦截器吗?任何关于这方面的建议都将不胜感激。谢谢

No-EF根本不提供查询拦截器。这纯粹是WCF数据服务的补充。您必须为这种逻辑实现自己的基础架构,但我怀疑它在全球范围内是否可行

您可以在您的上下文中执行以下操作:

public IQueryable<Client> ClientsQuery(IPrincipal principal)
{
    if (prinicipal.IsInRole("Admin") 
    {
        return this.Clients;
    } 
    else
    {
        return this.Clients.Where(...);
    }
}

顺便说一句,WCF数据服务也无法解决导航属性问题。

为什么需要它们?你能解释一下你试图解决的问题吗?我需要的原因是实现一些基于角色的业务逻辑。例如,如果有两个角色:Admin和Non-Admin,并且如果Admin调用getClients,它应该返回所有客户端。如果非管理员调用getClients,它应该只返回特定区域中的客户端。这可行吗?我在寻找查询拦截器的方向正确吗?谢谢。你的回答有道理。
var query = from p in context.Products
            where ...
            select new 
                {
                    Name = p.Name,
                    Clients = p.Clients.Where(...)
                };