03 2021 档案
摘要:显式事务与隐式事务 SQL Server显式事务与隐式事务 SQL Server 事务类型 事务相关方法 DbTransaction 或 IDbContextTransaction Commit 和 Rollback context.Database.XXX BeginTransaction、Beg
阅读全文
摘要:默认事务行为 默认情况下,如果数据库提供程序支持事务,单个 SaveChanges() 调用中的所有变更都会在一个事务中被提交。如果其中任何一个变更失败了,那么事务就会回滚,没有任何变更会被应用到数据库。这意味着 SaveChanges() 能够确保要么成功保存,要么在发生错误时不对数据库做任何修改
阅读全文
摘要:事务的概念 事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。 事务的特征 事务具有4个基本特征,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性 (Isolation)、持久性(Duration),简称:ACID。
阅读全文
摘要:在 DbContext 或DbSet 上使用Remove 方法 已经跟踪对象删除: var blog = context.Blogs.Find(1); Console.WriteLine(context.Entry(blog).State); context.Blogs.Remove(blog);
阅读全文
摘要:自动生成属性值是指在添加或更新实体时由 EF 或数据库自动生成字段的值。 public class Blog { public DateTime CreateDate { get; set; } public DateTime? UpdateDate { get; set; } } 在添加期间保存显
阅读全文
摘要:更新数据 数据库中有主键所对应的记录,修改实体到 Modified 状态,调用 SaveChanges 时,生成 Update 语句。 更新已跟踪实体的数据 当实体由 DbContext 获取,且默认为已为跟踪状态,当我们改变实体的属性值时,跟踪器将自动将实体的状态修改为 Modified 状态。
阅读全文
摘要:每个上下文实例都有一个 ChangeTracker,它负责跟踪需要写入数据库的更改。 更改实体类的实例时,这些更改会记录在 ChangeTracker 中,然后在调用 SaveChanges 时被写入数据库。 此数据库提供程序负责将更改转换为特定于数据库的操作(例如,关系数据库的 INSERT、UP
阅读全文
摘要:全局筛选器的一些限制 局限性一:HasQueryFilter方法过滤筛选无法应用于导航属性。 builder.HasQueryFilter(f => !f.IsDeleted && f.Posts.All(w => !w.IsDeleted)); 局限性二:HasQueryFilter方法过滤筛选只
阅读全文
摘要:全局查询筛选器 全局查询筛选器用于全局设置筛选数据的条件。常见的应用场景有:软删除,多租户,禁用,激活,多用户博客系统。 全局查询筛选器可以精简代码,可以提高代码质量 ,防止开发者忘记加条件。 public class Blog { private string _tenantId; public
阅读全文
摘要:异步查询 当在远程数据库中执行查询时,同步查询可能会阻止当前线程,异步查询可避免阻止线程,这有助于避免冻结户端界面, 异步操作还可以增加 Web 应用程序的吞吐量,可以在数据库操作完成前释放线程去处理其他请求。 EF Core 不支持在同一上下文实例上运行多个并行操作。 应始终等待操作完成,然后再开
阅读全文
摘要:在 EF Core 中可以使用原始 SQL 语言对数据进行查询,当无法使用 LINQ 表达要执行的查询或者因使用LINQ 查询而导致低效时,SQL 查询非常有用,原始 SQL 查询可返回实体类型。 基本原生 SQL 查询 可以使用 FromSql 扩展方法开始查询。 var blogs = cont
阅读全文
摘要:客户端与服务端求值 在下面的示例中,一个辅助方法用于标准化从 SQL Server 数据库中返回的博客的 URL。 由于 SQL Server 提供程序不了解此方法的实现方式,因此不可以将其转换为 SQL。 除了在客户端上是通过执行该方法来返回 URL,查询的其余部分都是在数据库中执行的。 var
阅读全文
摘要:Entity Framework Core 允许使用导航属性来加载相关实体。 加载关联数据三种方式 预先加载:表示从数据库中加载关联数据,作为初始查询的一部分。显式加载:稍后手动控制时,从数据库中显式加载导航数据。 延迟加载:当访问导航属性时,才从数据库中加载导航属性数据。 IQueryable 未
阅读全文
摘要:生成操作 DefaultIfEmpty、Empty、Range 和 Repeat,Iqueryable 只支持 DefaultIfEmpty 方法。 var blogs = _context.Blogs.Where(b => b.BlogId > 1).DefaultIfEmpty(); var d
阅读全文
摘要:查询数据您必须知道 IEnumerable 是在服务器本地内存中查询的,不支持远程查询。 IQueryable 支持远程查询,延迟加载,除此还提供很多的 XXXAsync 方法支持异步远程查询。 DbSet 也提供一些方法便于查询。 Enumerable Class Queryable Class
阅读全文
摘要:Enumerable.Zip 将指定函数应用于两个序列的对应元素,以生成结果序列。 Element Operations Method Name Description More Information ElementAt Returns the element at a specified ind
阅读全文
摘要:Generation Operations Method Name Description More Information DefaultIfEmpty Replaces an empty collection with a default valued singleton collection.
阅读全文
摘要:Join Operations Method Name Description More Information Join Joins two sequences based on key selector functions and extracts pairs of values. Enumer
阅读全文
摘要:Projection Operations Method Name Description More Information Select Projects values that are based on a transform function. Enumerable.Select Querya
阅读全文
摘要:Entity Framework Core 使用语言集成查询 LINQ 来查询数据库中的数据,LINQ 查询表达式会传递给数据库提供程序,进而转换为特定于数据库的查询语言 SQL 语句,通过下面的文档学习如何使用 LINQ 从数据库查询实体。 Enumerable Class Queryable C
阅读全文
摘要:在团队环境中的迁移 Git 工作流程 来自<http://www.ruanyifeng.com/blog/2015/12/git-workflow.html> Git远程操作详解 来自<http://www.ruanyifeng.com/blog/2014/06/git_remote.html> 共
阅读全文
摘要:反向工程 支持工具 反向工程之前你将需要安装 PMC 工具或 CLI 工具,还需要安装相应数据库提供程序。 使用工具命令 Scaffold-DbContext 'Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Chinook' Microsoft
阅读全文
摘要:多个提供程序的迁移 EF Core 工具仅为当前活动的提供程序创建迁移文件,有时,你可能需要分别为多个提供程序创建迁移,有两种方法来处理这种情况:1、维护两个不同版本的迁移集;2、合并到单个迁移集,针对不同提供程序个性化设置。 维护两个不同版本的迁移集 Add-Migration InitialCr
阅读全文
摘要:channel.ExchangeDeclare("logs", ExchangeType.Fanout); Fanout类型它只是将接收到的所有消息广播到它知道的所有队列中 using RabbitMQ.Client; using System; using System.Text; namespa
阅读全文
摘要:1.工作队列 using RabbitMQ.Client; using RabbitMQ.Client.Events; using System; using System.Text; using System.Threading; namespace Worker { class Program
阅读全文

浙公网安备 33010602011771号