2011-04-07 63 views
1

我们使用实体框架4来访问我们的数据库。每个表都有一些安全相关的字段,我们希望检查每个查询(例如开始/结束日期,安全级别,元素是否激活)。实体框架4没有ADO.NET数据服务的查询拦截器

是否有可能定义类似全局查询拦截器的东西,为安全字段添加额外的检查?我知道WCF数据服务存在查询拦截器,但我们不使用数据服务。

回答

1

不幸的是没有。 QueryInterceptor是与WCF数据服务相关的功能,与其使用相关的整个实现是内部的,所以如果不使用WCF数据服务,则无法在其他位置重用它。

基本上QueryInterceptor只是条件加入到执行的查询,所以你可以以同样的方式换到这将暴露的方法像类数据访问:

public IQueryable<TEntity> GetQuery() where TEntity : IOwnedByUser 
{ 
    return GetObjectSet<TEntity>().Where(e => e.Owner == CurrentUser.Login); 
}