【问题标题】:Scope on ASP .NET Core entity frameworkASP .NET Core 实体框架的范围
【发布时间】:2020-12-22 01:49:04
【问题描述】:

我想在 .NET 核心上使用作用域(如以下轨道上的作用域)。

  scope :published, -> { where(published: true) }

.NET Core 是否有类似 rails 的作用域?
或者在 netcore 模型上默认查询的最佳实践是什么,比如 rails 上的范围?

【问题讨论】:

  • 也许你应该首先解释一下 scope 在 ruby​​ on rails 上下文中的含义
  • 谢谢,但最后,我在网络核心上使用软删除,因为首先,我的目的是排除具有删除状态的行

标签: asp.net-core


【解决方案1】:

您可以使用 EF Core 的 Global Query Filters 来实现此目的。

来自文档示例:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Post>().HasQueryFilter(p => !p.IsDeleted);
}

要在单个查询中禁用它,请使用.IgnoreQueryFilters() Linq 扩展方法。

blogs = db.Blogs
    .Include(b => b.Posts)
    .IgnoreQueryFilters()
    .ToList();

【讨论】:

  • 实际上,这更像是default_scope,而不是普通的scope。顺便说一句,对我来说,将您的 where 条件放在 dbContext 而不是模型本身中看起来“不合适”。
猜你喜欢
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
  • 2016-11-29
相关资源
最近更新 更多