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

DbSet的Add方法是否会立即查询EF中的数据库?

DbSet的Add方法不会立即查询EF中的数据库。DbSet的Add方法是用于将实体对象添加到DbContext中的DbSet集合中,以便在保存更改时将其插入到数据库中。它只是将实体对象添加到内存中的跟踪集合中,并不会立即触发对数据库的查询操作。只有在调用SaveChanges方法时,EF才会将内存中的更改保存到数据库中。因此,Add方法的执行是在内存中进行的,不会直接查询数据库。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Entity Framework Core 2.0 入门

也可以): 输入用户名: 密码: 选择是否保存密码: 最后输入档案名字: 随后VSCode将尝试连接该数据库, 成功后右下角这样显示 (我这里输入有一个错误, 数据库名字应该是LearnEF): 随后在该文件输入下面这个...SaveChanges方法, 检查所有被追踪models, 读取他们状态. 这里用到是Add方法, context就会知道这个model状态是new, 所以就应该被插入到数据库....针对DbSet, 使用LinqToList方法, 触发对数据库查询操作: 首先把CompanyToString方法写上: 这样方便输入到控制台....过滤条件可以直接家在上面的某些方法里面, 例如: 通过主键查询, 就可以用DbSetFind方法: 这个方法有个优点, 就是如果这条数据已经在Context里面追踪了, 那么查询时候就不查数据库了..., 直接返回内存数据.

3.2K80

Entity Framework Core 2.0 入门

也可以): 输入用户名: 密码: 选择是否保存密码: 最后输入档案名字: 随后VSCode将尝试连接该数据库, 成功后右下角这样显示 (我这里输入有一个错误, 数据库名字应该是LearnEF...SaveChanges方法, 检查所有被追踪models, 读取他们状态. 这里用到是Add方法, context就会知道这个model状态是new, 所以就应该被插入到数据库....针对DbSet, 使用LinqToList方法, 触发对数据库查询操作: 首先把CompanyToString方法写上: 这样方便输入到控制台....过滤条件可以直接家在上面的某些方法里面, 例如: 通过主键查询, 就可以用DbSetFind方法: 这个方法有个优点, 就是如果这条数据已经在Context里面追踪了, 那么查询时候就不查数据库了..., 直接返回内存数据.

3.5K140
  • 【ASP.NET Core 基础知识】--数据库连接--使用Entity Framework Core进行数据库访问

    DbSetDbSet 是 DbContext 中表示数据库属性。每个 DbSet 表示一个表,并且可以用于查询和修改表数据。...下面是如何使用 EF Core 数据迁移步骤: 添加迁移:使用 Add-Migration 命令添加新迁移记录。这个命令创建一个新迁移类,并将其添加到迁移历史记录。...以下是一些可以用来提高EF Core性能优化技巧: 使用正确查询方式:根据查询需求选择合适方法。例如,使用LINQ查询、原生SQL或存储过程。...延迟加载(Lazy Loading):默认情况下,EF Core 不会自动加载实体之间导航属性。开启延迟加载功能可以提高性能,但可能导致额外数据库查询。...如果你需要在同一个 DbContext 实例访问多个数据库,你可以通过在 DbContext 类添加多个 DbSet 属性来实现这一点。每个 DbSet 属性对应一个数据库表。

    35000

    Entity Framework 简单增删改操作

    前言  在 Entity Framework 简单查询操作 主要是学习了在Entity Framework几种不同模式查询操作,现在主要来学习一下简单增加、删除、修改操作。...增加   在EF添加操作一般有两种方式:一是直接创建对象,然后调用“DbSetAdd()”方法进行添加;二是调用数据库上下文”Entry()”方法并设置对应状态。...此外,在含有导航属性时,将一个对象赋值给另一个对象导航属性也能达到添加效果(当导航属性为”DbSet“集合时通过调用导航属性Add()“方法也同样可以达到添加效果)。...这两句添加任何一句效果都是一样,就是都没有保存到数据库。...原因是EF自动发现状态改变,在调用下面的方法时状态发现是自动:   ?

    75331

    EntityFramework Core 学习扫盲

    方法添加EF CORE服务 public void ConfigureServices(IServiceCollection services) { // Add framework services...无论是使用DbSet形式抑或是使用modelBuilder.Entity形式都能将定义实体映射到数据库,下文也继续做出说明。 3....列名称和类型映射 Property方法对应数据库Column。 默认情况下,我们不需要更改任何实体包含属性名,EF CORE自动地根据属性名称映射到数据库列名。...索引 EF CORE索引概念和关系型数据库索引概念没有什么不同,比如在Sql Server,将Blog映射到数据库时,将为BlogId建立主键默认持有的聚集索引,将Post映射到数据库时,将为...不得不说,相比EF6.XHasRequired和WithOptional等方法EF COREApi和关系配置清晰直观了不少。

    9.5K90

    张高兴 Entity Framework Core 即学即用:(一)创建第一个 EF Core 应用

    简单来说 Code First 是先编写 C# 实体类,EF 根据实体类之间关系创建数据库;Database First 是先设计和创建数据库EF 根据数据库表结构生成 C# 实体类。...DbContext 实例表示程序与数据库一个会话(session),通过 DbContext 实例对数据库数据进行修改和查询。...,在 .NET 字符串并不是加密,密码可能短暂出现在内存,或是对程序反编译都可能造成密码泄露。...DbSet 是用于修改和查询实体数据,对 DbSet LINQ 查询转换为对应数据库查询。... 属性并不是必须,只是为了简化操作,在实例化数据库上下文后,仍然可以使用 Set() 方法获取实体类 DbSet

    2.5K10

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

    仓储 在领域层和数据映射层之间,像一个内存级别的领域对象集合 为领域业务单元测试提供替换点 集中数据库访问逻辑 ?...UnitOfWork 工作单元 一个工作单元在一个事务范围内保留所有对数据库变更,在这个工作单元结束时候一次性提交所有改动到数据库 DB Context 与 DB Set DB Context(UnitOfWork...工作单元) DB Set(Repository 仓储) EF Core 提供一个 DB Context 和多个 DB Set 组合完成数据查询和更新操作 ORM 框架 EF Core快速开始示例 创建一个空...初始化数据库 ,注意在初始化以前确保正确配置了连接字符串,并且在startup.cs添加了DbContext注入 // 安装dotnet tool ef工具 dotnet tool install...//添加迁移文件 dotnet ef migrations add Init // 更新数据库 dotnet ef database update 创建控制器 ProjectController

    81210

    C#进阶-Entity Framework 5 原理与使用详解

    本文详细介绍了Entity Framework 5(EF5)在C#使用方法,包括EF5基本概念、与其他持久层框架比较、基本语法和高级语法使用,并通过实例讲解了如何在项目中集成和使用EF5。...DbContext是EF核心类,用于与数据库进行交互。查询与操作:EF5通过LINQ(Language Integrated Query)执行查询,并自动将结果映射到对象模型。...这个上下文通常包含数据库表(通过DbSet表示)。...OnModelCreating方法用于配置实体与数据库表之间映射关系。2. 查询数据EF5使用LINQ进行数据查询查询结果自动映射到对象模型。...删除数据通过从DbSet移除对象并调用SaveChanges方法来执行删除操作。

    11910

    FreeSql.DbContext ,向"不是真正 ORM" 说拜拜

    DbContext 提供 SaveChanges 方法; 执行队列; DbSet 提供 Add、AddRange、Remove、RemoveRange、Update、UpdateRange 方法; 以及...entitys 主键值,是否存在于 states ,存在时报错; 验证 entitys 主键存在自增: 若有,则立即开启 DbContext 事务,按数据库种类执行相应方法,最终将返回自增值,...主键值,若无则报错; 验证 states 是否存在,若无则提醒应该先查询,再删除; 删除 states 对应实体; 清除 entitys 内自增属性值、Guid 类型值,那这个 entitys...将变为可 Add 状态; 进入【打包执行队列】; Update/UpdateRange(entitys) 验证 entitys 主键值,若无则报错; 验证 states 是否存在,若无则提醒应该先查询...,再删除; 进入【打包执行队列】; Select 立即执行队列命令(打包方式),以免脏读到未提交数据; 查询完成时,更新 states 值; 更新数据规则 对比 states 存在历史快照值

    1K30

    【源码解读(一)】EFCORE源码解读之创建DBContext查询拦截

    ,我们依次讲解,首先会讲解AddDbContext,后续文章依次讲解其余方法。...    在上面的代码,我们可以看到我们调用了一个ComileQuery方法,构建了一个委托,实际上,我们在业务编码,也可以使用缓存查询,来提升业务系统性能,虽然我们不能使用IDataBase这个发给发...,但是EF提供了一个静态类,里面的ComileQuery方法支持构建查询委托,      看下面代码,我们可以调用这个方法缓存一个查询方法,后面就不会再去调用很多类,很多方法来实现我们查询,可以缓存起来...();如果是其他数据库也是一样道理,需要调用这样方法,可以看第三方提供库源码,或者文档,这里我是SQLITE数据库,就调用这个方法,这个方法是将SqlLite一些服务注入到容器里,并且将我们web...,在写了不托管EFioc到WEBioc场景下如果注入服务到EFioc,以及如何拦截增删改查方式,提升查询性能方式,以及最后EFioc托管到WEBioc,本文作为源码讲解第一章,觉得写有点多

    70920

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

    仓储 在领域层和数据映射层之间,像一个内存级别的领域对象集合 为领域业务单元测试提供替换点 集中数据库访问逻辑 24.jpg UnitOfWork 工作单元 一个工作单元在一个事务范围内保留所有对数据库变更...,在这个工作单元结束时候一次性提交所有改动到数据库 DB Context 与 DB Set DB Context(UnitOfWork 工作单元) DB Set(Repository 仓储) EF Core...提供一个 DB Context 和多个 DB Set 组合完成数据查询和更新操作 ORM 框架 EF Core快速开始示例 创建一个空 web api 项目 添加 Pomelo.EntityFrameworkCore.Mysql...初始化数据库 ,注意在初始化以前确保正确配置了连接字符串,并且在startup.cs添加了DbContext注入 // 安装dotnet tool ef工具 dotnet tool install...//添加迁移文件 dotnet ef migrations add Init // 更新数据库 dotnet ef database update 创建控制器 ProjectController

    94111

    FreeSql.DbContext ,向"不是真正 ORM" 说拜拜

    DbContext 提供 SaveChanges 方法; 执行队列; DbSet 提供 Add、AddRange、Remove、RemoveRange、Update、UpdateRange 方法; 以及...entitys 主键值,是否存在于 states ,存在时报错; 验证 entitys 主键存在自增: 若有,则立即开启 DbContext 事务,按数据库种类执行相应方法,最终将返回自增值,...主键值,若无则报错; 验证 states 是否存在,若无则提醒应该先查询,再删除; 删除 states 对应实体; 清除 entitys 内自增属性值、Guid 类型值,那这个 entitys...将变为可 Add 状态; 进入【打包执行队列】; Update/UpdateRange(entitys) 验证 entitys 主键值,若无则报错; 验证 states 是否存在,若无则提醒应该先查询...,再删除; 进入【打包执行队列】; Select 立即执行队列命令(打包方式),以免脏读到未提交数据; 查询完成时,更新 states 值; 更新数据规则 对比 states 存在历史快照值

    1.4K10

    Entity Framework Core 2.0 新特性

    模型级过滤器将使用正确上下文实例值,即执行查询那个。   使用  IgnoreQueryFilters() 方法在一次查询禁用过滤器。...在 ef core 2.0 ,我们将自定义DbContext类型注册到DbContextPool服务,可让该数据库上下文类型实例重复使用。...   在使用C#6.0特性构建SQL语句并使用FromSql和ExecuteSqlCommand方法执行SQL语句时,自动加入使用参数化查询,防止SQL注入。...支持映射数据库定义函数,可以在LINQ查询中使用。   ...一旦注册了方法,您就可以在查询任何地方使用它。  要注意几件事: 按照惯例,在生成SQL时,该方法名称用作函数名称(在本例是用户定义函数),但可以在方法注册期间重写名称和schema。

    1.9K50

    CSharpEntityFramework与CodeFirst实践

    在这个类,我们声明了一个DbSet属性books,这就对应了数据库book表。...换句话说,继承了DbContext类就对应了某一个数据库,其连接属性由配置文件连接配置决定,并在DbContext设置进去(基类构造函数设置),这个DbContext所有DbSet就对应到数据库表...和Down方法,同时从方法代码我们能大致推测,Up方法就是发生变更,这里创建表Book(dbo是EF一些配置语法),设置表字段以及设置主键;而Down方法就是回滚操作,将表Book删除。...之后我们再次使用update-database命令将变更更新到数据库,得到当前数据库内容: 此时我们将book表填充一些数据: 然后,我们将DbContextDbSet属性删除,再次进行迁移...其实我们首先知道,在进行Update-database时候,EF框架执行Up方法,同时,AddColumn、DropColumn很显然是DbMigration这个类方法,我们找一找看有没有重命名方法

    26210

    【愚公系列】2023年01月 .NETC#知识点-EF Core性能优化之显示编译

    对于EF Core查询优化其实也是多种多样,性能优化是在特定情况下特定解决方案,下面着重介绍EF Core显示编译查询 1.显示编译概念 EF Core对我们查询表达式编译使用了缓存,当你查询代码需要重用以前执行查询时...,EF Core将使用哈希查找并从缓存返回已编译查询。...如果能直接对查询进行编译,并跳过哈希计算和缓存查找那么效率是否提高呢?这就是显示编译。 说白了也就是跳过查找过程,而且使用场景如下: EF Core,还不支持编译查询返回集合类型。...在数据量大时候使用,比如查询大于一百万次时候大约回快6倍,一万次大约是2倍左右。 一、Core性能优化之显示编译 本文主要是内存数据库方式来测试显示编译查询性能,避免了其他因素。...显示编译两个方法如下: EF.CompileQuery()//同步方法 EF.CompileAsyncQuery()异步方法 这两个方法允许您定义一个已编译查询,然后通过调用一个委托调用它。

    45730

    EF Core 入门

    在直接使用通过EF获取元素时,EF自动跟踪哪些字段发生了变化,当手动调用保存时候,EF就会把数据回传给数据库。...可以延迟加载需要数据,外键引用属性、查询结果等 丰富映射关系,支持一对一,一对多,多对多,甚至继承、单表多实例等 可以使用Linq 进行查询 非Core版可以通过数据库表生成实体类,两种都可以通过实体类生成表...add package Microsoft.EntityFrameworkCore.Design dotnet ef migrations add InitialCreate dotnet ef database...这是EF Core保留迁移记录,以便下次使用。 如果项目根目录里没有 blogging.db 这个SQLite文件的话,自动创建该文件,同时设置好表;如果有,但不是SQLite文件,则会报错。...; context.SaveChanges();//保存数据到数据库 //查询 var modelA = context.ModelAs.Where(p => p.Id > 1).First(); /

    2.4K10

    .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst

    基于该比较,EF Core 检测变化,并添加适当迁移而不是再重新生成数据库。 最后运行命令Update-Database生成数据库和表,数据库在我们配置程序路径下。...同时我们查询学生的话理论上也能查出学生拥有的课程,接下来我们向数据库插入数据并进行查询。...Iqueryable作用和数据延迟加载,在我们查询数据时候列表数据以Iqueryable类型返回,如果我们不是调用获取结果api,则不会立即查询数据库,而是等到使用tolist()、count()、...max()等方法时才会查询数据返回结果。...AsNoTracking使用,EFCore默认跟踪实体,也就是保存在内存,用于更新删除等操作。如果只是查询数据而不用跟踪则使用AsNoTracking查询。 并发控制。 .....

    2.7K30
    领券