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

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

全局查询过滤器:避免重复的过滤逻辑 问题:您是否厌倦了在每个查询中为“软删除”实体添加相同的筛选条件? 解决方案:使用 EF Core 中的全局查询筛选器在实体的所有查询中自动应用条件。...这样可以避免忘记在每个查询中添加过滤器的风险,并使您的代码更简洁。 关键字:EF Core 全局查询筛选器、EF Core 软删除、数据库筛选 2....解决方案:影子属性允许您存储元数据,而无需将其直接包含在 C# 类中。它们非常适合像 or 这样的审计数据,您可能在数据库中需要这些数据,但不想成为主域模型的一部分。...Product 关键字:EF Core 影子属性、在 EF Core 中跟踪审核数据、实体框架核心审核跟踪 3....无论是用于一致筛选的全局查询筛选器、用于审核跟踪的影子属性、用于提高性能的编译查询、用于命令日志记录的侦听器,还是用于灵活数据存储的值转换,EF Core 都是您的坚强后盾。

12410

03-EF Core笔记之查询数据

预先加载 使用Include方法指定要包含在查询结果中的关联数据。...EF Core还提供了不使用代理的方式进行延迟加载,此方法需要向实体类中注入ILazyLoader实例,并通过该实例实现get访问: public class Blog { private ICollection...当发生客户端筛选数据的时候,EF Core会发出警告,也可以配置当发生客户端筛选时抛出异常: protected override void OnConfiguring(DbContextOptionsBuilder...Core跟踪查询返回的实体,如果我们不需要跟踪查询返回的实体,则可以通过AsNoTracking方法禁用跟踪。...关联数据 原始SQL中查询关联数据的方式与Linq查询的关联方式一致。 全局筛选器 全局筛选器对于软删除和多租户非常有用。

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

    在 Entity Framework Core 中优化查询:实现.NET 中的高性能数据访问

    优化 EF Core 查询的关键策略 将 AsNoTracking 用于只读查询 默认情况下,EF Core 会跟踪从数据库中检索到的实体,这在内存和 CPU 方面可能会很昂贵。...如果您不需要更新这些实体,请使用 来禁用更改跟踪。...尽早 筛选数据始终尽早筛选数据,以最大程度地减少从数据库中检索的数据量。这减少了数据库和应用程序的负载。...AsNoTracking() 我们仅包含过去 30 天的订单,以最大限度地减少数据检索。 我们将数据投影到仅包含必要字段的形状中。...优化 EF Core 中的查询对于构建高性能 .NET 应用程序至关重要。通过使用禁用更改跟踪、编译查询、提前筛选数据和利用投影等技术,您可以显著提高应用程序的性能。

    12810

    优化 EF Core 和 LINQ 以实现高性能应用程序

    实体框架核心(Entity Framework Core,简称 EF Core)是一款强大的对象关系映射(ORM)工具,它弥合了面向对象编程与关系型数据库之间的差距,而 LINQ 在.NET 中提供了强大的查询语法...本文将深入探讨针对 EF Core 和 LINQ 的有效优化技巧,展示好与不好的代码示例,讨论相关优势,并着重介绍那些有助于提升性能和可扩展性的特性。...对只读查询使用 AsNoTracking 这样做可以减少内存使用量,并加快只读数据的查询速度,因为 EF Core 不会跟踪实体的更改情况。...不佳示例:加载整个实体 var users = context.Users.ToList(); // 加载所有用户的所有属性 良好示例:只加载你需要的列 var userNames = context.Users.Select...不佳示例:先获取所有数据然后再进行筛选 var activeUsers = context.Users.ToList().Where(u => u.IsActive); 良好示例:在查询中进行筛选 var

    6310

    在Entity Framework中使用存储过程(三):逻辑删除的实现与自增长列值返回

    本篇文章通过实例的方式,讨论两个在EF使用存储过程的主题:如何通过实体和存储过程的映射实现逻辑删除;对于具有自增长类型主键的数据表,在进行添加操作的时候如何将正确的值反映在实体对象上。...进一步地讲,由于我们在.edmx模型的概念实体Contact中,已经将IS_DELETED删除掉了,所以我们在程序中不可能设置这样一个额外的筛选条件。...实际上EF为你考虑到了这一点,你可以在直接通过EF设计器设置这样一个筛选条件。...在当前实体被选中的情况下,进入Mapping Details界面,你会发现在于数据库表的映射中具有一个的下拉框,通过该下拉框你可以设置基于数据库表相关列的筛选条件。...这个关系的定义包含在存储过程映射的Result Columns Binding列表中。如下图所示,我设置了存储过程返回列ID和Contact属性ID之间的映射关系。 ?

    1.7K80

    在 EF Core 中操作 PostgreSQL 数据表的 JSONB类型字段

    SELECT details->'specs' FROM products; 筛选数据 '@>' 运算符检查左侧的 JSONB 值是否在顶层包含正确的 JSONB 路径/值条目。...SELECT details->>'price' AS price FROM products; 筛选包含特定属性的项目 过滤在 jsonb 列中包含特定属性的记录。...'warranty'; 按嵌套属性值筛选 过滤 jsonb 列在嵌套对象中包含指定值的记录。...SELECT * FROM products WHERE details#>>'{specs, memory}' = '16GB'; 按数组中的属性筛选 过滤 jsonb 数组包含具有特定属性值的对象的记录...其中一项功能是对 JSONB 的支持,JSONB 是 PostgreSQL 中的一种 JSON 二进制格式。 定义实体 我们的主要实体是 Product,代表我们库存中的商品。

    11600

    EF Core索引

    EF Core 每个不同的属性集仅支持一个索引。 如果使用 "熟知 API" 来配置已定义索引的属性集的索引(按照约定或以前的配置),则会更改该索引的定义。 ...modelBuilder) { modelBuilder.Entity() .HasIndex(b => b.Url) .IsUnique(); } 尝试为索引的列集插入多个具有相同值的实体将导致引发异常...时,将为唯一索引中包含的所有可以为 null 的列添加 'IS NOT NULL' 筛选器。 ...某些关系数据库允许配置一组列,这些列包含在索引中,但不是其 "键" 的一部分。 ...当查询中的所有列都作为键列或非键列包含在索引中时,这可以显著提高查询性能,因为表本身无需访问。 有关 SQL Server 包含列的详细信息,请参阅文档。

    1.6K10

    在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?

    继续讨论EF中使用存储过程的问题,这回着重讨论的是为存储过程的参数进行赋值的问题。说得更加具体一点,是如何为实体映射的Delete存储过程参数进行赋值的问题。...关于文中涉及的这个问题,我个人觉得是EF一个有待改进的地方,不知道各位看官是否同意?...一、EF存储过程参数赋值的版本策略 和传统的基于DataSet的ADO.NET类似,EF的核心功能之一就是“状态追踪(State Tacking)”。...粗略地想想,EF这样设计也无可厚非:Insert存储过程用于添加一条全新的记录,自然应该采用当前值;而Delete存储过程用于删除一条现有的记录,删除操作的筛选条件自然应该使用原始值。...所以,我个人觉得这是EF一个值得改进的地方,让Delete存储过程和Update一样,也可以指定不同的版本。

    1.8K100

    图解|Linux 组调度

    那么当进程数大于 CPU 核心数时,操作系统是如何同时运行这些进程的呢? 这里就涉及 进程调度 问题。 操作系统运行进程的时候,是按 时间片 来运行的。...当进程的时间片用完后,操作系统将会把当前运行的进程切换出去,然后从进程队列中选择一个合适的进程运行,这就是所谓的 进程调度。...当选择出最优的 进程组 后,再从 进程组 中选择出最优的进程进行运行,而被切换出来的进程将会放置回原来的 进程组。...由于 组调度 是建立在 cgroup 机制之上的,而 cgroup 又是基于 虚拟文件系统,所以 进程组 是以树结构存在的。也就是说,进程组 除了可以包含进程,还可以包含进程组。...如果筛选出来的实体是进程,那么直接返回这个进程。 如果筛选出来的实体是进程组,那么将会继续对这个进程组中的可运行队列进行筛选,直至筛选出一个可运行的进程。

    3.5K10

    【译】MongoDB EF Core 提供程序:有什么新功能?

    学习分享 丨作者 / 郑 子 铭 原文 | Rishit, Luce 翻译 | 郑子铭 这是 Rishit Bhatia 和 Luce Carter 的客座文章。...功能亮点 添加属性和更改跟踪 MongoDB 文档模型的优点之一是它支持灵活的架构。再加上 EF Core 支持 Code First 方法的能力,您可以动态向实体添加属性。...AdaptedFromBook { get; set; } } 现在,我们将为找到的电影实体设置这个新添加的属性,并在保存更改后查看 EF Core 的更改跟踪功能。...根据模型类中可用的字段,我们可以尝试从我们的收藏中查找一些有趣的电影。假设我想查找所有评级为“PG-13”且情节包含单词“shark”的电影,但我希望按标题字段对它们进行排序。...Core 3" }; dbContext2.Movies.Add(myMovie3); await dbContext2.SaveChangesAsync(); 现在支持事务了,对于后两个电影实体的第二组操作不应该通过

    7210

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 查询)--学习笔记

    2.4.5 EF Core -- 查询 关联数据加载 客户端与服务端运算 跟踪与不跟踪 复杂查询运算 原生 SQL 查询 全局查询筛选器 关联数据加载 学员和助教都在项目分组中,调整模型,删除 Assistant...EF Core 为我们提供了三种加载数据的方式 预先加载 显式加载 延迟加载 加载相关数据:https://docs.microsoft.com/zh-cn/ef/core/querying/related-data.../core/querying/tracking 默认情况下,跟踪返回实体类型的查询。...这表示可以更改这些实体实例,然后通过 SaveChanges() 持久化这些更改。...全局查询筛选器:https://docs.microsoft.com/zh-cn/ef/core/querying/filters modelBuilder.Entity().HasQueryFilter

    1.2K10

    Nat. Mach. Intell. | 多尺度拓扑Transformer用于蛋白质-配体相互作用预测

    在CASF-2016数据集中,因为该数据集包含57个簇,每个簇包含五个不同的复合物,使得排序任务更加艰巨。...这表明构象偏离真实位置越大,影响对接得分的尺度也越大。 评估TopoFormer在筛选任务中的表现 为了评估TopoFormer方法的筛选能力,作者使用了CASF-2013核心集。...为此,作者组建了一个包含配体构象和能量标签的训练数据集,根据每个蛋白质靶点定制TopoFormers。 作者的筛选任务包括两个关键步骤。...此外,在本研究中,成功率和富集因子(EF),特别是EF1%、EF5%和 EF10%被用于药物发现的虚拟筛选。这提供了该方法优先选择活性化合物而非非活性化合物的能力的见解。...如表2所示,作者的模型显示出竞争力的性能,达到了7.29的平均EF1%,超过了大多数基于评分函数的筛选方法。

    17010

    ORM查询语言(OQL)简介--高级篇:脱胎换骨

    下面是来自SQLSERVER 联机帮助的说明: 子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。 许多包含子查询的 Transact-SQL 语句都可以改用联接表示。...其他问题只能通过子查询提出。在 Transact-SQL 中,包含子查询的语句和语义上等效的不包含子查询的语句在性能上通常没有差别。但是,在一些必须检查存在性的情况中,使用联接会产生更好的性能。...数据访问组件性能     这么多ORM框架,我并不是很熟悉,PDF.NET的目标只想在某些方面赶超MS的EF框架,据说现在EF6都快出来了,EF4.5在性能上上了一个台阶。...尽管EF是PDF.NET ORM 的强劲对手,但 PDF.NET ORM的查询语言OQL,相对于EF的查询语言Linq,还是有自己独立的特色,OQL比Linq更接近SQL,Linq是VS的语法糖,本质上...C,C++,C# 对表达式都是“左求值计算”的,这是一个很重要的概念,某些程序语言可能是“右求值计算”的。如果表达式中有括号,那么前面的计算将挂起,计算完括号内的结果后,再继续处理表达式的剩余部分。

    2.6K70

    基于AI的新药研发!⛵

    图片 虚拟药物筛选 AI 可以在新药研发过程中发挥巨大作用的另一个步骤是『虚拟药物筛选』,通过模拟药物筛选的过程,预测化合物可能的活性,对比较有可能成为药物的化合物进行针对性的实体筛选,这个过程可以大大降低药物研发的时间和经济成本...有不少传统方法方案在尝试,但受限于算法和算力,对千万级别的化合物分子进行相似性、子结构、超结构等分析时,耗时较长(分钟级别),而在AI向量检索技术优化后,能大大加速这个过程(对十亿级的化学式数据极速分析...针对海量化合物的虚拟筛选是非常核心关键的一部,其效果很大程度决定了后期小白鼠实验以及临床试验能否成功,候选底库量级越大,筛选准确率越高,新药研发成功的概率也相应越高。...AI 新药研发辅助系统 筛选流程 & 核心步骤 详细展开 MolSearch 的虚拟化合物筛选技术如下图所示,包含以下步骤: 图片 ① 通过 RDKit 工具将化合物分子的化学式转换为化学式指纹/Chemical...图例是一个单个起始原子出发的片段和比特位,最终的完整指纹生成,是对分子中的每个原子进行这个操作后的结果。

    69181

    EF基础知识小记六(使用Code First建模自引用关系,常用于系统菜单、文件目录等有层级之分的实体)

    日常开发中,经常会碰到一些自引用的实体,比如系统菜单、目录实体,这类实体往往自己引用自己,所以我们必须学会使用Code First来建立这一类的模型....以下是自引用表的数据库关系图: ok,下面开始介绍从零创建一个Code First版的自引用模型. 1、往目标项目中添加EF包,通过NuGet程序包添加 导入相关的程序集. 2、创建自引用实体类...,从实体类可以看出该实体拥有单个父类型、子类型集合,这里比较特殊的是,这里的父类型和子类型都是自己,也就是自引用.注意:一个没有付类型的实体,该实体就是整个继承类型的最顶端. 5、编写测试代码:...ToString(), cat.Name); cat.Subcategories.ForEach(child => Print(child, level + 1));//递归,直到最后遍历的节点没有子节点集合...,则跳出递归循环 } 简单解释下测试代码的逻辑: (1)、从所有的节点中获取没有父节点的节点,该节点为顶级节点 (2)、然后通过递归将该顶级节点下面的所有的子节点全部遍历出来,每当递归到的节点含有子节点集合

    90360

    【asp.net core 系列】8 实战之 利用 EF Core 完成数据操作层的实现

    EF Core 批量加载模型 通常情况下,在使用ORM的时候,我们不希望过度的使用特性来标注实体类。因为如果后期需要变更ORM或者出现其他变动的时候,使用特性来标注实体类的话,会导致迁移变得复杂。...EF Core的配置类我们在《C# 数据访问系列》中关于EF的文章中介绍过,这里就不做过多介绍了(没来得及看的小伙伴们不着急,后续会有一个简单版的介绍)。...Core支持通过Assembly加载配置类,可以指定加载当前上下文类所在的Assembly,然后筛选实现接口中包含IEntityTypeConfiguration的类即可。...主要是为了对实现类隐藏具体的EF 上下文实现类。...在实现各接口方法之前,创建如下属性: public DbSet Set { get => Context.Set(); } 这是EF操作数据的核心所在。

    1.6K40
    领券