首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

每个 .NET 开发人员解决常见问题时都应该了解的 5 个 EF Core 功能

全局查询过滤器:避免重复的过滤逻辑 问题:您是否厌倦了在每个查询中为“软删除”实体添加相同的筛选条件? 解决方案:使用 EF Core 中的全局查询筛选器在实体的所有查询中自动应用条件。...此功能对于实施软删除、多租户或需要持续筛选的任何方案特别有用 public classAppDbContext:DbContext { protectedoverridevoidOnModelCreating...这样可以避免忘记在每个查询中添加过滤器的风险,并使您的代码更简洁。 关键字:EF Core 全局查询筛选器、EF Core 软删除、数据库筛选 2....Product 关键字:EF Core 影子属性、在 EF Core 中跟踪审核数据、实体框架核心审核跟踪 3....无论是用于一致筛选的全局查询筛选器、用于审核跟踪的影子属性、用于提高性能的编译查询、用于命令日志记录的侦听器,还是用于灵活数据存储的值转换,EF Core 都是您的坚强后盾。

12410

Entity Framework Core 2.0 新特性

一.模型级查询过滤器(Model-level query filters)   ef core2.0包含了一个新特性,我们叫他模型级查询过滤器(Model-level query filters)。...此特性允许使用Linq查询表达式直接定义在实体类型的元数据模型上。这样的过滤器会自动应用到任何LINQ查询所涉及的那些实体类型,包括间接引用的实体类型(对象引用,导航属性)。...这个特性的一些常见应用是: 软删除-定义一个 IsDeleted 属性 多租户-定义一个 TenantId 属性 示例代码: 1 public class BloggingContext : DbContext...,实现了多租户和软删除。...局限性: 过滤器只能在层次结构的根实体类型上定义 过滤器不允许使用导航属性进行过滤(可以根据反馈添加此功能。)

1.9K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Entity Framework Core 2.0 新特性

    使用所属类型与EF6中使用复杂类型类似,(PS:这里解释一下EF6中的复杂类型,复杂类型是允许在实体中组织标量属性的实体类型的非标量属性。像实体一样,复杂类型由标量属性或其他复杂类型属性组成。)...这些过滤器自动应用于涉及这些实体类型的任何LINQ查询,包括间接引用的实体类型,例如通过使用Include或直接导航属性引用。...嗯..软删除,多租户的数据库设计  可以大量的使用这方面的功能,会减少很多代码量 public class BloggingContext : DbContext { public DbSet的查询API已经在以前版本的EF和LINQ to SQL中可用,以允许应用程序缓存查询的翻译,以便它们只能被计算一次并执行多次。...虽然EF Core通常可以根据查询表达式的散列表示自动编译和缓存查询,但这种机制可以通过绕过哈希计算和高速缓存查找来获得小的性能增益,从而允许应用程序使用已经通过调用委托编译了查询。

    3.9K90

    Entity Framework Core 实现全局查询过滤

    微软在 Entity Framework Core 2+ 中引入了全局查询过滤器,简化了构建多租户应用程序和实体软删除的复杂度。这篇文章我将通过代码的形式对全局过滤查询进行详细的讲解。...那么问题来了,着这种情况下我们应该怎样支持多租户,应该怎样实现软删除,以及应该怎样实现模型查询过滤的自动检测。下面我们就来一个问题一个问题的讲解。...departments = ef.Departments; return departments; } } 一、 前提条件 如果要为所有实体配置全局查询过滤器,就必须能够自动检测出实体类型...(this, new object[] { modelBuilder }); } base.OnModelCreating(modelBuilder); } 三、总结 这篇文章这是简单的实现了多租户和软删除...,队医业务场景更加复杂的项目,我们需要利用一些特殊方法来实现全局查询过滤器。

    1.1K10

    Entity Framework Core 简介

    零、EF Core 开发方法 EF Core 只支持两种开发方式 Code First 和 Database First,在 EF Core 2.0 开始不支持数据库模型的可视化设计器以及数据库设计导航...在 Code First 方法中, EF Core API 使用基于 domain classes 中提供的约定和配置的迁移来创建数据库和表,这种方法在 DDD 中很有用。...一、EF Core 与 EF6 这里列一下 EF Core 目前所具有的 EF6 的功能 DbContext ; DbSet ; Data Model ; 使用Linq-to-Entities查询 ;...以下是 EF Core 目前所不具有的 EF6 的功能 EDMX /模型的图形可视化 ; 实体数据模型向导 ; ObjectContext API ; 使用Entity SQL查询 ; 自动迁移 ; TPT...EF Core 具有如下新功能 简单的关系配置 批量INSERT,UPDATE和DELETE操作 用于测试的内存提供程序 支持IoC(控制反转) 独特的约束 阴影属性 Alternate keys 全局查询过滤器

    1.9K10

    01-EF Core笔记之创建模型

    () .Property("LastUpdated"); 阴影属性 阴影属性指的是在实体中未定义的属性,而在EF Core中模型中为该实体类型定义的属性,这些类型只能通过变更跟踪器进行维护...阴影属性的定义: modelBuilder.Entity().Property("LastUpdated"); 为阴影属性赋值: context.Entry(myBlog...).Property("LastUpdated").CurrentValue = DateTime.Now; 查询时使用阴影属性: var blogs = context.Blogs .OrderBy...当发现有继承关系时,EF Core会自动维护一个名为Discriminator的阴影属性,我们可以设置该字段的属性: modelBuilder.Entity() .Property(...查询类型很有用,EF Core不会对它进行跟踪,也不允许新增、修改和删除操作,但是在映射到视图、查询对象、Sql语句查询、只读库的表等情况下用到。

    3.1K20

    ABP中的数据过滤器 (转载非原创)

    本文首先介绍了ABP内置的软删除过滤器(ISoftDelete)和多租户过滤器(IMultiTenant),然后介绍了如何实现一个自定义过滤器,最后介绍了在软件开发过程中遇到的实际问题,同时给出了解决问题的一个未必最优的思路...一.预定义过滤器  ABP中的数据过滤器源码在Volo.Abp.Data[2]包中,官方定义了2个开箱即用的过滤器,分别是软删除过滤器(ISoftDelete)和多租户过滤器(IMultiTenant)...二.自定义过滤器 自定义过滤器是比较简单的,基本上都是八股文格式了,对于EFCore来说,就是重写DbContext中的ShouldFilterEntity和CreateFilterExpression...下面通过一个例子来介绍下EF Core的自定义过滤器。...,后来想想那ABP内置的软删除过滤器(ISoftDelete)和多租户过滤器(IMultiTenant)是如何实现的呢?

    95420

    .Net Core + DDD基础分层 + 项目基本框架 + 个人总结「建议收藏」

    基础设施层 基础设施层使用的相关知识:Code First ,EF Core,Autofac依赖注入,仓储模式的实现接口,领域服务的实现接口,缓存,以及各种基础工具类 一,Code First:使用Code...-—— 创建一次空的数据迁移:已现在版本为起始点 二,EF Core :软删除 ——全局过滤删除的状态,AsNoTracking() ——不持久化到数据库时的查询使用 Any——查询判断使用Any...四,Redis缓存,多种数据类型,查询,插入效率高,Redis与数据库同步策略,先更新数据库在删除缓存,延时双删,(延时,根据数据查询的数据来判断延时的时间),使用StackExchange.Redis...应用层 应用层使用的相关知识:AutoMapper,Dto,Autofac依赖注入 一,Dto:数据传输对象,主要是展现层和应用层传输数据 二,AutoMapper:对象之间传输数据,先使用仓储查询出数据...来请求WebApi ,以及查看WebApi 接口,Swagger可以做接口文档 四,Log4Net:日志异常的全局捕捉,记录日志到TXT中 五,过滤器:使用过滤器来进行模型的验证 ,Log4Net的日志异常的全局捕捉

    5K50

    CSV文件编辑器——Modern CSV for mac

    点击安装》Modern CSV for mac 快速编辑 多单元格编辑 复制行、列和单元格。 移动行、列和单元格。 插入行和列。 删除行和列。 大文件处理 加载数十亿行的文件。...可根据您的需要自定义明暗 主题 键盘快捷键您可以根据自己的喜好进行 设置,包括单元格大小、行/列阴影、文本字体等。...它使用稳定排序,因此尽可能保留其他列的顺序。 过滤器使用在过滤器查询中清楚描述的强大语法。 最后,您可以手动隐藏所需的任何行或列。您所要做的就是选择并调用隐藏命令。...快速查看大型 CSV 文件 Modern CSV 不仅是一个强大的 CSV 编辑器,还是一个强大的 CSV 查看器。它带有只读模式,可以快速加载大文件,并且占用的内存很小,只是文件大小的一小部分。...您还可以告诉它如何处理不同扩展名的文件。您的 .csv 文件在带有 CRLF 换行符的 ANSI(Windows-1252,西欧)字符编码中是否有分号分隔符?您可以每次都打开它并相应地保存文件。

    4.9K30

    Unity通用渲染管线(URP)系列(四)——方向阴影(Cascaded Shadow Maps)

    通过复制LitPass并删除阴影投射器不需要的所有内容来创建ShadowCasterPass文件。因此,我们只需要剪切空间位置以及剪切的基色。片段函数没有任何返回值,因此如果没有语义,它将变为无效。...灯光设置为使用硬阴影还是软阴影都没关系。 ? (阴影测试场景) 阴影尚未影响最终渲染的图像,但是我们已经可以通过帧调试器查看会将什么渲染到阴影图集中。...(两盏带有阴影的灯光,都是一半的强度) 稍后我们将在最大距离处正确切除阴影,但目前这些无效阴影仍然可见。...过滤器设置功能具有四个参数。首先是float4的大小,前两个分量的X和Y纹素大小,Z和W的总纹理大小。然后是原始样本位置,然后是每个样本的权重和位置的输出参数。两者都定义为实数数组。...可以独立于其他材质属性执行此操作,以支持最大的灵活性。因此,我们为其添加一个单独的_Shadows着色器属性。使用KeywordEnum属性为其创建一个关键字下拉菜单,默认情况下阴影处于打开状态。

    6.8K40

    文档驱动式代码设计器——代码是设计出来的!

    代码是敲出来的吗?是批量生成出来的吗?   No no no,代码是设计出来的!   如果说到代码生成器,大家可能会想到三层、动软代码生成器、数据库表等等。...(“主要实现在对应数据库中表的基类代码的自动生成,包括生成属性、添加、修改、删除、查询、存在性、Model类构造等基础代码片断,支持不同3种架构代码生成,使程序员可以节省大量机械录入的时间和重复劳动,而将精力集中于核心业务逻辑的开发...简单的说,用EF的code frist做实体类,然后生成数据库,再根据业务需求设计Dto,有很多很多的Dto。页面用angularjs做总控和表单,kendoui做列表。...数据库角度:先设计数据库文档,然后自动生成ef的code first 的实体类,然后用ef的数据库迁移功能建立表。然后生成默认的接口定义。这个没啥难度吧。...业务角度:设计功能模块、页面,页面里面的数据列表、查询、分页、删除、表单等,然后根据这些设计生成对应的Dto,以及相关的接口,还有页面需要的代码。这样代码和文档就都有了。

    1K80

    一款极简单的 BaseEntity CRUD 方法

    前言 尝试过 ado.net、dapper、ef,以及Repository仓储,甚至自己还写过生成器工具,以便做常规CRUD操作。...开发方式,特别对单表或多表CRUD,利用继承节省了每个实体类的重复属性(创建时间、ID等字段),软件删除等功能,进行 crud 操作时不必时常考虑仓储的使用; 本文介绍 BaseEntity 一种极简约的...); 实现单表、多表查询的软删除逻辑; 声明 示范项目:https://github.com/2881099/FreeSql/tree/master/Examples/base_entity...item.Delete(); //恢复软删除 item.Restore(); //根据主键获取对象 var item = UserGroup.Find(1); //查询数据 var items...= UserGroup.Where(a => a.Id > 10).ToList(); 实体类型.Select 是一个查询对象,使用方法和 FreeSql.ISelect 一样; 支持多表查询时,软删除条件会附加在每个表中

    94510

    2022年了有哪些值得推荐的.NET ORM框架?

    它解决了对象和关系型数据库之间的数据交互问题,ORM的作用是在关系型数据库和业务实体对象之间作一个映射,这样我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法...EntityFramework-Plus - EF的增强工具集,包括过滤器,审核,缓存,查询,批删除,批更新等。...PgSql 的数组类型等; 支持 丰富的表达式函数,以及灵活的自定义解析; 支持 导航属性一对多、多对多贪婪加载,以及延时加载; 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁; 支持 MySql/...查询接口类似于 LINQ。您可以使用 Chloe.ORM 通过 lambda 查询 LINQ 之类的数据并执行任何操作(加入查询 | 组查询 | 聚合查询 | 插入 | 批量更新 | 批量删除)。...内存高效- 它提取并缓存您的对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程中重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。

    5.9K11

    Entity Framework Plus: 让 EF Core 开发如虎添翼

    EF Core介绍 Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术,EF Core 是适用于 .NET 的现代对象数据库映射器...Core(EF Core) 扩展库,旨在提升 Entity Framework 的性能和克服其局限性。...通过提供一系列实用的功能,如批量操作、查询缓存、查询延迟、LINQ动态、审计跟踪等,使得使用 Entity Framework 进行数据库开发变得更加高效和灵活。...查询延迟:允许延迟查询的执行,以便在需要时结合其他功能(如查询缓存和查询未来)一起执行。 查询过滤:支持在全局、实例或查询级别上应用过滤条件,以便在检索数据时自动应用这些条件。...支持多个版本的 Entity Framework:EntityFramework-Plus 支持 Entity Framework 5(EF5)、Entity Framework 6(EF6)和 Entity

    18810

    2023年,推荐10个让你事半功倍的CSS在线生产力工具

    Neumorphism 是一种设计风格,它通过使用软阴影和浮雕效果来表现出物体的立体感。这种设计风格的灵感来自于物理世界中的物体形态,特别是它们的凹凸、浮雕和阴影。...该网站提供了一个简单的界面,用于调整阴影的不同属性,如颜色、大小和偏移量。在生成阴影后,您可以将生成的 CSS 代码复制到您的项目中。...这个工具提供了非常详细的阴影设置来辅助制作 neomorphism 的设计。并且支持移动端和桌面端的阴影设置,使用者可以很方便的制作不同的设计。...它能够扫描你的代码库,识别出未使用的 CSS 类,并将其删除。这样可以使你的 CSS 文件更小,加载更快。...代码来创建带有边框弧度的图像。

    3.4K32

    2022年了有哪些值得推荐的.NET ORM框架?

    它解决了对象和关系型数据库之间的数据交互问题,ORM的作用是在关系型数据库和业务实体对象之间作一个映射,这样我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法...EntityFramework-Plus - EF的增强工具集,包括过滤器,审核,缓存,查询,批删除,批更新等。...,比如 PgSql 的数组类型等; 支持 丰富的表达式函数,以及灵活的自定义解析; 支持 导航属性一对多、多对多贪婪加载,以及延时加载; 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁...查询接口类似于 LINQ。您可以使用 Chloe.ORM 通过 lambda 查询 LINQ 之类的数据并执行任何操作(加入查询 | 组查询 | 聚合查询 | 插入 | 批量更新 | 批量删除)。...内存高效- 它提取并缓存您的对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程中重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。

    3.9K20
    领券