首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对于所有查询执行,是否有覆盖或指定的函数

对于所有查询执行,是否有覆盖或指定的函数
EN

Stack Overflow用户
提问于 2019-04-16 08:27:10
回答 3查看 164关注 0票数 1

我正在使用实体框架,并且我希望将一个动态where条件添加到所有查询中。现在,不是遍历我所有的代码并添加那个条件,有没有什么地方我可以添加它,有点像所有查询的指定函数,在它们执行之前调用?

EN

回答 3

Stack Overflow用户

发布于 2019-04-16 08:42:58

另一种选择是Global Query Filter,但只有EF Core2.0支持。

票数 1
EN

Stack Overflow用户

发布于 2019-04-16 08:50:05

可以添加全局查询筛选器,以便将where子句附加到所有查询。基本上,您只需覆盖DbContext中的OnModelCreating方法,并将HasQueryFilter添加到所需的实体。

有关更多信息,请查看此资源- https://docs.microsoft.com/en-us/ef/core/querying/filters

票数 1
EN

Stack Overflow用户

发布于 2019-04-16 08:39:58

在单独的类中构建查询(例如查询构建器)。然后在调用者中执行它。然后用另一个类(装饰器)包装(装饰)构建器,这个类将用您想要的条件附加结果查询:

代码语言:javascript
复制
interface IQueryBuilder
{
    IQuerable<T> BuildQuery<T>(...);
}

class EntityFrameworkQueryBuilder : IQueryBuilder
{
    public IQuerable<T> BuildQuery<T>(...) => query;
}

class PostConditionQueryBuilderDecorator : IQueryBuilder
{
    ctor(IQueryBuilder builder) => _builder = builder;

    public IQuerable<T> BuildQuery<T>(...) => query.Where(x => x.Foo != bar);
}

许多DI容器都有一流的decorators support

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55698933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档