随笔分类 - EF Core学习
摘要:AsQueryable扩展方法的拼接查询使用: using MyDbcontext _dbcontext=new MyDbcontext(); var query=_dbcontext.Users.AsQueryable(); if(!string.IsNullOrWhiteSpace(userna
阅读全文
摘要:在 ASP.NET Core 中,使用工作单元模式(Unit of Work)可以有效地管理数据库事务。通过定义一个能够开启、提交和回滚事务的工作单元接口及其实现,结合仓储层和服务层,可以让数据操作更加清晰和可靠。以下是详细说明。 定义工作单元接口 IUnitOfWork 该接口将包含开启、提交和回
阅读全文
摘要:仓储(Repository) 仓储模式封装对数据源的访问逻辑,包括CRUD操作。以下是一个简单的仓储接口和实现示例: public interface IRepository where T : class { Task<IEnumerable> GetAllAsync(); Task GetByI
阅读全文
摘要:学生类Student public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public List<Teacher> Teach
阅读全文
摘要: 
阅读全文
摘要:设计时 DbContext 创建 本文内容从应用程序服务使用不带参数的构造函数从设计时工厂Args某些 EF Core Tools 命令(例如 Migrations 命令)要求在设计时创建派生的 DbContext 实例,以便收集有关应用程序实体类型及其如何映射到数据库架构的详细信息。 在大多数情况
阅读全文
摘要:异步编程 本文内容异步 LINQ 运算符客户端异步 LINQ 运算符当在数据库中执行查询时,异步操作可避免阻止线程。 对于在富客户端应用程序中保持响应式 UI,异步操作很重要,还可以增加 Web 应用程序中的吞吐量,从而释放线程来为 Web 应用程序中的其他请求提供服务。 按照 .NET 标准,EF
阅读全文
摘要:高效更新 本文内容批处理在相关情况下使用 ExecuteUpdate 和 ExecuteDelete批处理EF Core 通过在一次往返中自动将所有更新批处理在一起,帮助最大限度地减少往返。 考虑以下情况: C# 复制var blog = context.Blogs.Single(b => b.Ur
阅读全文
摘要:高效查询 本文内容 正确使用索引 只投影需要的属性 限制结果集大小 高效分页 在加载相关实体时避免笛卡尔爆炸 尽可能预先加载相关实体 缓冲和流式处理 跟踪、非跟踪和标识解析 使用 SQL 查询 异步编程 其他资源 显示较少选项 高效查询是一个庞大的主题,涵盖的主题就像索引、相关实体加载策略以及许多其
阅读全文
摘要:显式跟踪实体 项目 2023/10/05 7 个参与者 反馈 本文内容 介绍 插入新实体 附加现有实体 更新现有实体 删除现有实体 删除依赖实体/子实体 删除主实体/父实体 使用 TrackGraph 进行自定义跟踪 显示较少选项 每个 DbContext 实例跟踪对实体所做的更改。 在调用 Sav
阅读全文
摘要:本文内容如何跟踪实体实体状态从查询跟踪简单查询和更新查询,然后插入、更新和删除每个 DbContext 实例跟踪对实体所做的更改。 在调用 SaveChanges 时,这些跟踪的实体会相应地驱动对数据库的更改。 本文档概述了 Entity Framework Core (EF Core) 更改跟踪,
阅读全文
摘要:保存数据 本文内容方法 1:更改跟踪和 SaveChanges方法 2:ExecuteUpdate 和 ExecuteDelete(“批量更新”)总结虽然查询允许从数据库中读取数据,但保存数据意味着向数据库添加新实体、删除实体或以某种方式修改现有实体的属性。 Entity Framework Cor
阅读全文
摘要:处理并发冲突项目2023/10/0512 个参与者 反馈本文内容开放式并发本机数据库生成的并发令牌应用程序管理的并发令牌解决并发冲突显示另外 2 个 提示 可在 GitHub 上查看此文章的示例。 在大多数情况下,数据库会由多个应用程序实例并发使用,每个实例对数据执行独立修改。 在同一时间修改相同的
阅读全文
摘要:级联删除项目2023/08/2417 个参与者 反馈本文内容发生级联行为时发生级联行为的位置级联 NULL配置级联行为Entity Framework Core (EF Core) 表示使用外键的关系。 具有外键的实体是关系中的子实体或依赖实体。 此实体的外键值必须与相关主体/父实体的主键值(或替换
阅读全文
摘要:ExecuteUpdate 和 ExecuteDelete项目2023/05/114 个参与者 反馈本文内容ExecuteDeleteExecuteUpdateChange tracking事务显示另外 3 个 备注 EF Core 7.0 中已引入此功能。 ExecuteUpdate 和 Exec
阅读全文
摘要:使用事务项目2023/10/0514 个参与者 反馈本文内容默认事务行为控制事务保存点跨上下文事务使用外部 DbTransactions(仅限关系数据库)使用 System.Transactions显示较少选项事务允许以原子方式处理多个数据库操作。 如果已提交事务,则所有操作都会成功应用到数据库。
阅读全文
摘要:本文内容添加新实体的关系图添加相关实体更改关系删除关系除了独立实体以外,还可以使用模型中定义的关系。 提示 可在 GitHub 上查看此文章的示例。 添加新实体的关系图如果创建多个新的相关实体,则将其中一个添加到上下文时也会添加其他实体。 在下面的示例中,博客和三个相关文章会全部插入到数据库中。 由
阅读全文
摘要:本文内容添加数据更新数据删除数据单个 SaveChanges 中的多个操作DbContext.SaveChanges() 是使用 EF 保存数据库更改的两种技术之一。 使用此方法,可执行一个或多个跟踪的更改(添加、更新、删除),然后通过调用 SaveChanges 方法来应用这些更改。 或者,可在不
阅读全文
摘要:由于 EF Core 会自动修正导航属性,因此在对象图中可能会产生循环引用。 例如,加载博客及其关联文章会生成引用文章集合的博客对象。 其中每篇文章将返回引用该博客。 某些序列化框架不允许使用循环引用。 例如,Json.NET 在发现循环引用的情况下,会引发以下异常。 Newtonsoft.Json
阅读全文
摘要:预先加载可以使用 Include 方法来指定要包含在查询结果中的关联数据 using (var context = new BloggingContext()){ var blogs = context.Blogs .Include(blog => blog.Posts) .ToList();} 可
阅读全文