继续探索Entity Framework Core 2.0,今天我将探讨如何轻松使用软删除(或逻辑删除)。我的意思是以透明的方式实现软删除,例如,您是物理上的删除行。 要实现软删除,您需要添加一列以指示该行数据是否被逻辑删除。如果您想知道该行被删除,可以使用布尔列,如果您想知道删除的时间,可以使用日期列。其次是更改所有查询,使用...
使用EfCore如何是增加,修改,删除数据都离不开 DbContext 中的savechange,而且这是一个虚方法。 实现软删除可以通过重写savechange方法可以实现。 ISoftDelete 定义一个软删除接口,如果实现了该接口,表明这个类就有软删除功能。 publicinterfaceISoftDeleted{publicboolIsDeleted{get;set;}} ChangeTracker 在DbContext中有...
HasQueryFilter通用解决方案 不知我们是否思考过一个问题,若有很多实体都有其软删除场景,那么我们就都需要加上IsDeleted字段,同时还需要配置全局过滤器,如此重复性动作我们是否觉得厌烦,搬砖的我们的单从程序角度来看,搬砖的本源就是为了解放劳动生产率,提高工作效率,说的更通俗一点则是解决重复性劳动。此时为了解决上述...
使用Entity Framework Core 查询计划调试器可视化工具,可直接在 Visual Studio 中查看查询的查询计划。 目前,可视化工具支持 SQL Server 和 PostgreSQL。 对于 EF Core:7-8。 Visual Studio Marketplace 扩展 Microsoft.EntityFrameworkCore.AutoHistory 一个插件库,它可用于将 EF Core 执行的数据更改自动记录到历史记录...
今天来讲解一下 .NET 中的重要成员 Entity Framework Core。Entity Framework Core (以下简称 EF Core...
Entity Framework Core 数据查询原理详解 1. 查询sql的生成机制 一般来说,ef会将linq表达式生成为只需要在数据库端执行的sql。但是有些linq表达式没法生成完全由数据库处理的sql,如: //StandardizeUrl是一个方法 var blogs = context.Blogs
1、新建ASP.NET Core 空项目 Assignment.MasaEntityFramework ,并安装 Masa.Contrib.Data.EntityFrameworkCore 、 Swashbuckle.AspNetCore 、 Microsoft.EntityFrameworkCore.InMemory 、 Microsoft.EntityFrameworkCore.Tools dotnet add package Masa.Contrib.Data.EntityFrameworkCore --version 0.4.0-rc.4 ...
查询过滤器允许你在全局范围内对特定类型的查询应用过滤条件。这对于实现软删除(即将实体标记为已删除而不是物理删除)等功能特别有用。 复制 protectedoverridevoidOnModelCreating(ModelBuilder modelBuilder){modelBuilder.Entity<Blog>().HasQueryFilter(b=>!b.IsDeleted);// ...其他配置} ...
微软在 Entity Framework Core 2+ 中引入了全局查询过滤器,简化了构建多租户应用程序和实体软删除的复杂度。这篇文章我将通过代码的形式对全局过滤查询进行详细的讲解。在讲解前我们先来简单说一下什么是多租户,所谓多租户简单来说是指一个单独的实例可以为多个组织服务。多租户技术为共用的数据中心内如何以单一系统...
EFCore 官方说明不支持多个过滤器,因此我们必须使用比较复杂的表达式和表达式合并方法来解决此问题 下面是具体的代码示例: publicpartialclassMasterContext : DbContext {publicGuid TenantId {get;set; }publicList<Guid>_tenantIds;publicboolisAllActive;//这适用于租户需要所有数据、软删除行和活动行的场景publicint...