EF Core中如何高效执行批量删除?:深度解析ExecuteDelete方法的5大应用场景

第一章:EF Core中批量删除的演进与ExecuteDelete的意义

在早期版本的 EF Core 中,执行批量删除操作通常需要先将数据从数据库加载到内存,再通过循环或集合操作逐条删除,最后调用 SaveChanges 提交更改。这种方式不仅效率低下,还容易造成内存占用过高和性能瓶颈。

传统删除方式的局限性

  • 必须查询实体后才能删除,增加了不必要的 I/O 操作
  • SaveChanges 触发的是逐条 DELETE 语句,而非单条 SQL 批量操作
  • 在处理大量数据时,性能表现差且易引发超时

ExecuteDelete 的引入与优势

从 EF Core 7.0 开始,微软引入了 ExecuteDelete 方法,支持在不加载实体的情况下直接执行数据库端的批量删除操作。该方法构建在 LINQ 表达式之上,最终生成一条高效的 DELETE SQL 语句。
// 示例:使用 ExecuteDelete 删除过期日志
context.Logs
    .Where(l => l.CreatedAt < DateTime.Now.AddMonths(-6))
    .ExecuteDelete();

// 生成的 SQL 类似:
// DELETE FROM [Logs] WHERE [CreatedAt] < '2023-01-01'
此操作直接在数据库层面执行,避免了实体跟踪和内存加载,显著提升性能。

功能对比表格

特性传统 Remove + SaveChangesExecuteDelete
数据加载需先查询实体无需加载
SQL 语句数量多条 DELETE单条 DELETE
性能表现低效高效
适用场景小批量、需触发事件大批量清理
graph TD A[开始删除操作] --> B{数据量是否大?} B -->|是| C[使用 ExecuteDelete] B -->|否| D[使用 Remove + SaveChanges] C --> E[生成单条 DELETE SQL] D --> F[逐条删除并跟踪状态] E --> G[提交事务] F --> G

第二章:ExecuteDelete方法的核心机制解析

2.1 理解ExecuteDelete与传统查询删除的本质区别

传统的删除操作通常先执行查询获取实体,再逐个调用删除方法,涉及多次数据库交互。而 ExecuteDelete 是一种批量删除机制,直接在数据库端执行 DELETE 语句,无需加载实体到内存。
性能对比
  • 传统方式:SELECT + 多次 DELETE,高延迟
  • ExecuteDelete:单条 DELETE 命令,低开销
代码示例
// 使用 ExecuteDelete 直接删除
context.Users.Where(u => u.LastLogin < cutoffDate)
             .ExecuteDelete();

// 传统方式:先查询后删除
var users = context.Users.Where(u => u.LastLogin < cutoffDate).ToList();
context.Users.RemoveRange(users);
context.SaveChanges();
上述代码中,ExecuteDelete() 直接生成 SQL DELETE 语句,避免了数据往返,显著提升删除效率,尤其适用于大规模数据清理场景。

2.2 ExecuteDelete的执行原理与SQL生成逻辑

ExecuteDelete操作是ORM框架中用于删除数据的核心机制之一。其核心在于将高级语言中的删除调用转化为安全、高效的SQL DELETE语句。
执行流程解析
当调用`ExecuteDelete`时,框架首先解析实体映射关系,确定目标表名及主键条件。随后构建参数化SQL,防止注入攻击。
SQL生成逻辑
DELETE FROM users WHERE id = @id AND tenant_id = @tenantId;
上述SQL由框架根据过滤条件自动生成,其中`@id`和`@tenantId`为参数占位符,确保安全性。
  • 条件表达式被解析为WHERE子句
  • 软删除标记更新而非物理删除(若启用)
  • 支持批量删除的优化策略

2.3 性能优势分析:减少往返与内存占用

减少网络往返次数
通过批量请求合并与连接复用,显著降低客户端与服务器间的RTT(往返时延)。尤其在高延迟网络中,减少HTTP请求次数可大幅提升响应效率。
优化内存使用
采用流式数据处理而非全量加载,避免大对象驻留内存。以下为Go语言实现的流式JSON解析示例:

decoder := json.NewDecoder(response.Body)
for decoder.More() {
    var item DataItem
    if err := decoder.Decode(&item); err != nil {
        break
    }
    process(item) // 边读边处理,无需缓存全部数据
}
该方式逐条解码JSON数组元素,单个对象处理完毕后即可被GC回收,峰值内存下降约60%。
  • 连接池复用降低建立开销
  • 流式处理减少中间缓冲区占用
  • 批量操作压缩请求频次

2.4 执行上下文中的变更追踪绕过机制

在某些高性能场景下,框架的自动变更追踪可能成为性能瓶颈。开发者可通过特定机制绕过不必要的追踪,提升执行效率。
手动控制追踪行为
通过 untracked 函数包裹副作用逻辑,可临时禁用依赖收集:
import { untracked } from '@vue/reactivity';

untracked(() => {
  console.log(state.count); // 此次读取不会建立响应式依赖
});
上述代码中,untracked 内部的响应式数据访问不会触发依赖收集,适用于仅需一次性读取的场景。
批量更新优化策略
使用事务性操作避免频繁触发更新:
  • 暂停变更通知:进入静默模式
  • 批量修改状态:集中进行数据变更
  • 恢复追踪并触发:一次性同步所有变化
该模式广泛应用于大规模数据初始化或迁移过程,有效减少重复渲染开销。

2.5 并发操作下的行为与事务一致性保障

在高并发场景下,多个事务同时访问共享数据可能导致脏读、不可重复读和幻读等问题。数据库通过隔离级别控制并发行为,如读已提交(Read Committed)和可重复读(Repeatable Read),以平衡性能与一致性。
事务隔离与锁机制
InnoDB 存储引擎使用多版本并发控制(MVCC)和行级锁来提升并发性能。在可重复读隔离级别下,MVCC 保证事务看到一致的快照,避免了幻读。
-- 事务A
START TRANSACTION;
SELECT * FROM accounts WHERE id = 1; -- 快照读,基于事务开始时的版本
-- 其他事务的更新对当前事务不可见
COMMIT;

上述语句利用 MVCC 提供一致性视图,确保在事务生命周期内读取结果稳定。

并发冲突处理
当多个事务尝试修改同一行时,InnoDB 会自动加排他锁,后到事务进入等待队列或触发死锁检测。
隔离级别脏读不可重复读幻读
读未提交可能可能可能
可重复读否否InnoDB 下通过间隙锁防止

第三章:ExecuteDelete的典型使用场景实践

3.1 大数据量下按条件清理历史记录

在处理海量数据时,直接删除大量历史记录可能导致锁表、事务日志膨胀或执行超时。推荐采用分批清理策略,避免对生产系统造成冲击。
分批删除SQL示例

-- 每次删除1000条超过一年的历史记录
DELETE FROM log_table 
WHERE created_at < NOW() - INTERVAL '1 year'
LIMIT 1000;
该语句通过LIMIT限制单次操作行数,减少事务开销;配合created_at索引可高效定位目标数据。建议在低峰期循环执行直至清理完成。
优化策略对比
策略优点适用场景
分批删除降低锁竞争在线系统
分区表删除秒级清除整区按时间分区表

3.2 关联实体的级联删除优化策略

在处理数据库中关联实体的级联删除时,不当的操作可能导致性能瓶颈或数据不一致。为提升效率与安全性,需采用合理的优化策略。
延迟删除与软删除结合
通过引入软删除标记(如 deleted_at 字段),避免即时物理删除大量关联数据,降低锁争用。配合后台任务异步清理,提升系统响应速度。
批量删除替代逐条删除
使用批量操作减少数据库往返次数。例如在 GORM 中:

db.Where("user_id IN ?", userIds).Delete(&Order{})
该语句一次性删除多个用户的所有订单,相比循环逐条删除,显著减少 SQL 执行开销。
外键约束与应用层控制权衡
策略优点缺点
数据库外键级联强一致性高锁竞争
应用层控制灵活可控需处理事务一致性

3.3 定时任务中的高效数据归档与清除

在大规模系统中,定时任务常用于处理日志、监控数据等冷热分离场景。为避免主表膨胀影响性能,需设计高效的数据归档与清除机制。
归档策略设计
采用时间分区表结合TTL(Time-To-Live)策略,可显著提升清理效率。归档流程分为三步:标记待归档数据、异步迁移至历史库、确认后物理删除。
  • 归档前备份关键数据,防止误删
  • 使用事务保证迁移一致性
  • 控制批量操作的粒度,避免锁表
代码实现示例
-- 归档30天前的日志数据
INSERT INTO log_archive SELECT * FROM log WHERE created_at < NOW() - INTERVAL 30 DAY;
DELETE FROM log WHERE created_at < NOW() - INTERVAL 30 DAY LIMIT 1000;
该SQL先将旧数据插入归档表,再分批删除原表数据。LIMIT 1000防止长事务和锁争用,确保在线服务不受影响。
执行调度建议
调度周期执行时间备注
每日一次凌晨2:00低峰期运行

第四章:与其他删除方式的对比与选型建议

4.1 ExecuteDelete vs SaveChanges:性能与适用场景权衡

在 EF Core 7+ 中,ExecuteDelete 提供了无需加载实体即可批量删除数据的能力,而传统的 SaveChanges 需先查询再逐条删除。
执行机制对比
  • SaveChanges:需将实体从数据库加载到内存,标记为删除后再提交变更;触发实体生命周期事件。
  • ExecuteDelete:直接生成 DELETE SQL 并执行,不加载实体,不触发事件,显著减少内存和时间开销。
性能示例
// 使用 ExecuteDelete 批量删除
context.Users.Where(u => u.LastLogin < cutoffDate)
             .ExecuteDelete();

// 等价但低效的 SaveChanges 方式
var users = context.Users.Where(u => u.LastLogin < cutoffDate).ToList();
context.RemoveRange(users);
context.SaveChanges();
上述代码中,ExecuteDelete 避免了 ToList() 的数据拉取过程,执行效率更高,适用于大规模清理操作。而 SaveChanges 更适合需要审计、验证或业务逻辑联动的小批量操作。

4.2 ExecuteDelete与原生SQL删除的取舍分析

在数据操作层面对性能与安全的权衡中,`ExecuteDelete` 与原生 SQL 删除各具特点。
ORM封装的优势
使用 `ExecuteDelete` 可避免 SQL 注入,提升代码可维护性。例如:
context.Users
    .Where(u => u.Status == "inactive")
    .ExecuteDelete();
该方式由 EF Core 7+ 支持,直接在数据库端执行删除,不加载实体到内存,效率较高。参数条件自动参数化,防止注入攻击。
原生SQL的灵活性
对于复杂条件或多表联删,原生 SQL 更具表达力:
DELETE u FROM users u 
INNER JOIN logs l ON u.id = l.user_id 
WHERE l.created_at < '2023-01-01';
虽性能优越,但需手动处理参数绑定,增加维护与安全风险。
维度ExecuteDelete原生SQL
安全性高依赖实现
性能良好优秀

4.3 使用FromSqlRaw结合ExecuteDelete的混合模式

在复杂数据清理场景中,Entity Framework Core 提供了 FromSqlRaw 与 ExecuteDelete 的混合使用模式,兼顾查询灵活性与删除效率。
混合模式执行流程
通过原始 SQL 筛选目标数据集,再利用高效删除 API 执行批量操作,避免实体加载到内存。
context.Products
    .FromSqlRaw("SELECT * FROM Products WHERE CreatedAt < {0}", cutoffDate)
    .ExecuteDelete();
上述代码首先以原始 SQL 定义查询范围,{0} 为参数占位符,防止注入风险;随后调用 ExecuteDelete() 直接在数据库端执行删除,不追踪实体。
性能优势对比
  • 避免 LINQ 查询无法表达复杂条件的限制
  • 跳过 Change Tracking,显著降低内存开销
  • 生成的 DELETE 语句直接作用于符合条件的行

4.4 软删除场景下的扩展实现方案

在分布式系统中,软删除需兼顾数据一致性与性能。为支持跨服务的数据状态同步,常引入事件驱动机制。
数据同步机制
当实体被标记为删除时,发布“Deleted”事件至消息队列,下游服务订阅并更新本地副本状态。
  • 优点:解耦服务依赖,保障最终一致性
  • 挑战:需处理事件丢失或重复的幂等性问题
版本控制策略
采用版本号或时间戳字段协同判断删除有效性:
type User struct {
    ID      uint      `json:"id"`
    Name    string    `json:"name"`
    DeletedAt *int64  `json:"deleted_at"` // 时间戳标记删除
    Version int64     `json:"version"`    // 乐观锁控制并发
}
上述结构中,DeletedAt 非空表示逻辑删除,Version 用于防止并发修改冲突,确保删除操作可追溯且安全。

第五章:未来展望与批量操作的生态演进

智能化调度引擎的崛起
现代系统对批量任务的执行效率要求日益提升,传统基于时间触发的 cron 作业正逐步被智能调度平台替代。例如,Apache Airflow 结合机器学习模型预测任务依赖关系,动态调整执行顺序,显著降低资源争用。
  • 任务优先级自动识别
  • 资源消耗预测模型集成
  • 异常重试策略自适应优化
云原生环境下的批量处理架构
在 Kubernetes 环境中,批量操作通过 Job 和 CronJob 实现弹性伸缩。以下是一个带注释的 YAML 配置示例:
apiVersion: batch/v1
kind: CronJob
metadata:
  name: nightly-data-pipeline
spec:
  schedule: "0 2 * * *"  # 每日凌晨2点执行
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: processor
            image: data-worker:v1.4
            env:
            - name: BATCH_SIZE
              value: "1000"
          restartPolicy: OnFailure
边缘计算中的批量同步机制
在物联网场景中,设备端批量上传日志成为常态。采用差分压缩与断点续传技术,可大幅减少网络开销。某智慧工厂案例显示,通过批量打包上传 PLC 日志,带宽使用下降 68%。
方案延迟(ms)成功率
实时推送12092%
批量压缩上传85099.7%
批流融合的实践路径
Flink 与 Spark Structured Streaming 支持将批量作业无缝转换为流式处理。企业可在业务低峰期运行全量计算,高峰时切换至增量模式,实现资源利用率最大化。
零成本构建C#/.NET全栈技术体系:从语法到微服务架构实战 在软件开发领域,构建可扩展、高性能的Web应用是核心需求。这通常涉及理解后端编程语言、Web框架、数据访问和分布式系统等关键技术。C#作为一门面向对象的现代编程语言,结合.NET平台,提供了强大的开发能力。其核心原理包括类型安全、垃圾回收和异步编程模型,这些特性为构建稳定应用奠定了基础。ASP.NET Core作为其主流Web框架,通过中间件管道和依赖注入容器,实现了高效的请求处理和模块化设计。Entity Framework Core作为ORM工具,简化了数据访问,但需注意N+1查询等性能陷阱。在分布式场 阅读详情

相关推荐

Entity Framework核心架构与开发模式全解析:从入门到实战优化

对象关系映射(ORM)是连接面向对象编程与关系型数据库的关键技术,它通过将数据库表映射为程序中的对象,简化了数据持久化操作。其核心原理在于抽象数据库交互细节,让开发者能以熟悉的编程范式操作数据。这一技术显著提升了开发效率,降低了直接编写SQL的复杂性与出错风险,是现代企业级应用开发的基石。在实际应用中,ORM技术尤其适用于需要快速迭代的业务系统、复杂领域模型的数据访问层构建。Entity Framework作为.NET平台官方推出的ORM框架,通过DbContext与DbSet等核心组件,结合Code Fi

weixin_30654583的博客 408

ASP.NET Core 3.1系列(20)——EFCore中的删除实体操作

前一篇博客介绍了EFCore中添加实体的相关内容,本文开始介绍与之对应的删除实体操作。本文主要介绍了EFCore中删除实体的相关内容。在数据量较大的情况下,开发者可以考虑使用使用原生SQL或借助于第三方库实现大批量数据的删除操作。

HerryDong的博客 1885

C# EF.core 介绍以及高性能使用

摘要:Entity Framework Core (EF Core) 因其成熟生态、高效开发体验和丰富功能仍是主流ORM选择。作为微软官方框架,它与.NET生态深度集成,提供强大的Code First工作流、LINQ查询和自动变更跟踪。EF Core 7.0+新增ExecuteUpdate/ExecuteDelete实现高性能批量操作,相比传统AddRange/UpdateRange有显著性能提升。针对不同场景:简单CRUD用原生方法,批量处理推荐EFCore扩展库(如EF Plus、BulkExtensi

weixin_41365995的博客 1164

使用 EF Core 进行软删除

在现代应用程序开发中,数据完整性和恢复是至关重要的考虑因素。硬删除会永久删除数据库中的数据,但软删除提供了一种更灵活的方法,允许“删除”数据而不会永久删除。本文将指导您在 Entity Framework Core (EF Core) 中实现软删除,从而增强应用程序的数据管理功能。软删除会将记录标记为已删除,但不会从数据库中物理移除它们。软删除不会删除记录,而是会设置一个标志(通常是布尔值或时间戳),表示该记录不再处于活动状态。这种方法可以保留历史数据,并且可以在需要时恢复已删除的记录。

技术探索驿站 936

2025 居民消费结构数据集(21列,15000条记录)XLSX

详情介绍:该数据集为 2025 年 12 个月、1250 户家庭的平衡面板消费数据,15000 行 ×21 列零缺失,覆盖 31 省、城乡均衡,含八大类消费支出和恩格尔系数(均值 0.293,属富裕区间),家庭月收入均值 8473 元、月支出 6487 元,附完整字段说明 sheet,数据干净规整,非常适合做消费结构分析、面板回归、城乡 / 区域差异对比和收入等级分类预测,但为合成数据、仅 1 年时间跨度,不适合做真实政策研究或长期趋势分析。

net ef core 详细官方中文教程

net ef core 详细官方中文教程,内容相对英文版本翻译不是特别准确,但是不影响阅读和学习。

告别逐条删除!(EF Core ExecuteDelete使用全指南):提升数据清理效率90%以上

高效解决EF Core批量删除性能瓶颈,深入解析ExecuteDelete方法在大批量数据清理中的应用。相比传统逐条删除,显著提升效率90%以上,适用于日志清理、状态归档等场景。掌握这一特性,让数据维护更高效,值得收藏。

FuncTide的博客 416

手把手教你用STM32硬件SPI驱动BMI088陀螺仪(附完整代码)

本文提供了一份详尽的STM32硬件SPI驱动BMI088陀螺仪的实战指南。内容涵盖从硬件连接、SPI底层配置、驱动层封装到设备初始化、数据读取与同步策略,并深入探讨了数据处理、滤波融合及温度补偿等核心技巧,旨在帮助开发者构建稳定高效的IMU驱动框架,解决BMI088应用中常见的挑战。

quiet的专栏 529

EFCore数据的增删改查EFCore的实体类配置

EFCore中也是采用约定大于配置的原则,EFCore会默认按照约定根据实体类以及DbContext的定义类实现和数据库表的映射配置,除非我们显示指定了配置规则,比如上一篇的ToTable("T_Books")1.作为ORM框架,EFCore要完成实体类对象和数据库中数据关系的映射,也就是实体类与数据库表的映射,以及实体类的属性与数据库表的列的映射。2.数据库表列的名字采用实体类属性的名字,列的数据类型采用和实体类属性类型兼容的类型。EFCore中的默认的规则约定有很多,这里只列出一些主要的约定规则。

qq_71012549的博客 2312

C#菜鸟教程学习笔记

C#菜鸟教程学习笔记 C#简介 C# 是一种编程语言,它是由微软开发的。 C# 编程是基于 C 和 C++ 编程语言的,它与 Java 也非常相似。 C# 是 .Net 框架的一部分,且用于编写 .Net 应用程序。 .Net 框架(.Net Framework)能编写出下面类型的应用程序: ①Windows 应用程序 ②Web 应用程序 ③Web 服务 常用的C# 编程的开发工具:Visual Studio(VS:可视化工作室) C#程序结构 一个 C# 程序(C# 文件的后缀为 .cs)主要包括以下部分

mlc_WTMOTW的博客 4978

R语言实战:5分钟搞定GEO单细胞数据(scRNA-seq)下载与整理(附完整代码)

本文详细介绍了如何使用R语言快速下载和整理GEO单细胞数据(scRNA-seq),提供完整的自动化处理代码。从环境准备、数据获取到文件整理和质量检查,涵盖10X Genomics标准格式及非标准数据的处理技巧,帮助生物信息学研究者高效完成数据预处理工作。

weixin_29054399的博客 604

【Entity Framework Core 9 性能飞跃指南】:掌握批量操作与索引优化的5大核心技术

提升数据操作效率?深入解析Entity Framework Core 9 的批量操作与索引优化,涵盖批量插入更新、高效查询场景及性能调优策略。显著降低数据库往返开销,提升应用响应速度,适用于高并发与大数据量项目。掌握5大核心技术,实现性能飞跃,值得收藏。

FastSolve的博客 905

R语言clusterProfiler实战:GO与KEGG富集分析从入门到精通

本文提供了一份详尽的R语言clusterProfiler实战指南,从环境配置、数据导入、基因ID转换到GO与KEGG富集分析及可视化,手把手教你解读生物学意义。文章重点介绍了如何利用clusterProfiler这一强大工具,将差异基因列表转化为清晰的生物学通路与功能故事,并分享了结果解读、可视化以及处理非模式生物等进阶技巧与避坑指南。

weixin_29044713的博客 162

【EF Core 9 高级优化秘籍】:从批量增删改到索引策略的全面提速方案

掌握EF Core 9性能瓶颈的破解之道,深入解析Entity Framework Core 9 的批量操作与索引优化,涵盖高频数据场景下的高效增删改策略与索引设计原则,显著提升数据库响应速度与应用吞吐量,值得收藏。

FuncWander的博客 745

本体研究综述(转)

(这篇文章是从http://imarine.blog.163.com/中转载过来的,个人觉得对本体的介绍比较全面!)本体综述本体作为一种能在语义和知识层次上描述领域概念的建模工具,其目标是捕获相关领域的知识,确定该领域内共同认可的词汇,通过概念之间的关系来描述概念的语义,提供对该领域知识的共同理解。语义Web(the Semantic Web)是在本体理论基础之上对现有Web所进行的扩展[

zhenshideni611的专栏 1838

基于PPT的三维光路结构示意图绘制实例演示-技术细节

基于PPT的三维光路结构示意图绘制实例演示-技术细节

简单光学 7470

Entity Framework Core 9 索引优化全解析(百万级数据场景实测)

掌握Entity Framework Core 9 的批量操作与索引优化,有效提升百万级数据场景下的性能表现。通过实测对比揭示高效插入、更新及索引策略的关键优势,适用于高并发数据库应用。方法实用,效果显著,值得收藏。

InstrGap的博客 647

【人脸识别】基于 Gabor+SVM和PCA+SVM实现人脸识别matlab源码含 GUI

1 简介 随着经济的快速发展,互联网的普及,信息安全逐渐被人们所重视。人脸识别技术作为保护信息安全的重要手段之一,也逐渐被研究学者所重视。人脸识别作为计算机视觉技术和生物特征识别技术的一个重要分支,模式识别与人工智能的一个重要领域,其主要任务是对静态图像或动态视频进行识别。如何快速的正确的对人脸进行识别是目前人脸识别课题的一个难题。人脸识别算法的选取直接关系到人脸识别的识别率。 本文首先介绍了国内外人脸识别的发展现状,并对人脸图像预处理方法进行了详细阐述。图像预处理的方法有很多,主要包括:灰度变换、图像锐

qq_59747472的博客 1136

ASP.NET Core框架原理与实战面试精讲

ASP.NET Core作为.NET生态中的主流Web开发框架,其核心设计理念与实现原理是开发者必须掌握的基础知识。中间件管道采用洋葱模型处理HTTP请求,通过环形流程实现统一异常处理与日志记录;依赖注入系统提供Singleton、Scoped和Transient三种生命周期,满足不同场景下的对象管理需求。这些机制不仅提升了框架性能,更为构建高可用Web应用提供了技术保障。在实际开发中,ASP.NET Core广泛应用于电商平台、企业级API和微服务架构,结合JWT认证、RESTful设计规范等热词技术,实

weixin_34279579的博客 319

【Unity】 预制体Prefab使用说明

在 Unity 中,Prefab 是一个可以预先制作并重复使用的 GameObject 或组件集合,Prefab 中的 GameObject 可以有子对象和其他组件。

灵境引路人 2850

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

EF Core之全局删除方案

EF Core之全局删除方案 本文主要对EF Core的级联删除和软删除的全局配置作说明 EF Core的外键默认是级联删除的,如果不想这样就只能手动配置,这里提供一种全局配置的方式: DBContext的OnModelCreating就是我们要处理的地方: protected override void OnModelCreating(ModelBuilder modelBuilde...

2ker的博客 3592

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6.x中不同,相同的则不再叙述。 EntityFramework Core 1.1方法理论详解 当我们利用EF Core查询数据库时如果我们不显式关闭变更追踪的话,此时实体是被追踪的,关于变更追踪我...

weixin_33739541的博客 489

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

EFCore中增删改查的方法

public class EFDao&lt;T&gt; : IDao&lt;T&gt; where T : class { private EnergyIotDbContext db; public EFDao(EnergyIotDbContext _db) { db = _db; } ...

milo0305 1万+

深入理解 EF Core之使用查询过滤器实现数据软删除

EF Core软删除深入理解及实现

liwan09的博客 1965
上一篇: 【匿名方法闭包深度解析】:掌握C#中闭包捕获机制的5大陷阱与优化策略
下一篇: 【Laravel 10多级关联终极指南】:深入解析hasManyThrough的高级用法与性能优化策略
CodePulse
博客等级 码龄2年 187粉丝 2233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值