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

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

前言 通过前两篇,我们创建了一个项目,并规定了一个基本的数据层访问接口。这一篇,我们将以EF Core为例演示一下数据层访问接口如何实现,以及实现中需要注意的地方。 ? 1....EF Core的配置类我们在《C# 数据访问系列》中关于EF的文章中介绍过,这里就不做过多介绍了(没来得及看的小伙伴们不着急,后续会有一个简单版的介绍)。...使用EF Core实现数据操作 我们已经创建好了一个EF Context,那么现在就带领大家一起看一下,如何使用EF来实现 上一篇《「asp.net core」7 实战之 数据访问层定义》中介绍的数据访问接口...在实现各接口方法之前,创建如下属性: public DbSet Set { get => Context.Set(); } 这是EF操作数据的核心所在。...实现分页: 在实现分页之前,我们知道当时我们定义的分页参数类的排序字段用的是字符串,而不是lambda表达式,而Linq To EF需要一个Lambda表示才可以进行排序。

1.6K40

初级.NET程序员,你必须知道的EF知识和经验

为什么StudentId有值,而Studet为null?因为使用code first,需要设置导航属性为virtual,才会加载延迟加载数据。 ?...如果我们只需要查询数据的某些字段呢,上面查询所有字段岂不是很浪费内存存储空间和应用程序与数据库数据传输带宽。 我们可以: ? 对应监控到的sql: ? 我们看到生成的sql,查询的字段少了很多。...看起来这条语句并没有什么实际意义,然而这是AutoMapper生成的sql,同时我也表示不理解为什么和EF生成的不同) 这样做的好处? 避免在循环中访问导航属性多次执行sql语句。...这段代码我也是从网上偷的,具体链接找不到了。 然后我们的代码可以写成: ? 有没有美美哒一点。然后我们看看生成的sql是否正确: ?...最大的亮点就是可以直接批量修改、删除,不用像EF默认的需要先做查询操作。 至于官方EF为什么没有提供这样的支持就不知道了。

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

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

    ReaderInfo表查询可借图书数目比编号为9704读者多的所有读者信息,这里对表使用了别名来实现的,如果不使用别名,那么这个查询就无法实现。...,不能像SQL那么灵活的进行各种子查询,其实不支持的原因其中一个也是因为OQL查询不支持表的别名,另外一个原因是子查询无法获取到父查询的表名和字段名。...尽管EF是PDF.NET ORM 的强劲对手,但 PDF.NET ORM的查询语言OQL,相对于EF的查询语言Linq,还是有自己独立的特色,OQL比Linq更接近SQL,Linq是VS的语法糖,本质上...; OQLCompare中的的字段名与OQL缺乏相关性,因此只能通过“表名称.字段名称”这种形式来使用属性字段名,无法使用别名。...Ver 5.0的解决办法: 在OQL对象上,定义一些方法供OQL的关联子对象来访问需要的属性字段名信息: /// /// 从堆栈上只取一个字段名

    2.6K70

    金三银四面试:C#.NET面试题中高级篇5-Linq和EF

    8.LINQ可视化工具简单介绍一下? 9.LINQ to Object和LINQ to SQL有何区别? 10.除了EF,列举出你知道的ORM框架? 11.在哪些类型额项目中你会选择EF? 为什么?...Code FirstCode First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能。...提升从数据库中拿数据的速度,可以参考以下几种方法: 1).在数据库中的表中定义合适的索引和键 2).只获得你需要的列(使用ViewModel或者改进查询)和行(使用IQueryable)...大部分LINQ语句是在最终结果的第一个元素被访问的时候(即在foreach中调用MoveNext方法)才真正开始运算的,这个特点称为延迟执行。...LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库中执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable的一系列方法,最终在C#内部执行。

    4.2K30

    EntityFramework 外键值映射

    在数据访问层,处理上面同等的功能,LINQ操作代码如下所示。...这里的日期范围就是造成“从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值”这个错误的原因!!!...问题来了,虽然EF已经把要保存的数据自动转为了datetime2类型,但是数据库中表的字段还是datetime类型!...修改数据库中表的字段类型,将datetime类型修改为datetime2类型 例如,我在实体框架里面,对用户表的日期类型字段进行初始化,这样就能保证我存储数据的时候,默认值是不会有问题的。...在实体框架界面层的查询中,我们也不在使用部分SQL的条件做法了,采用更加安全的基于DTO的LINQ表达式进行封装,最后传递给后台的也就是一个LINQ对象(非传统方式的实体LINQ,那样在分布式处理中会出错

    4.2K50

    03-EF Core笔记之查询数据

    EF Core使用Linq进行数据查询。...Core有三种常见模型来加载关联数据: 预先加载:表示从数据库中加载关联数据,作为初始查询的一部分 显式加载:表示稍后从数据库中显式加载关联数据 延迟加载:表示在访问关联数据时,再从数据库中加载关联数据...当Linq无法满足查询需求,或因为使用Linq生成效率比较低的SQL查询时,可以考虑使用原始SQL进行查询。...当我们使用原始SQL查询时,EF Core仍然支持我们使用linq编写查询语句。...在执行查询时,EF Core会检查我们的sql语句是否支持拼接,如果支持的情况下,则会将linq过滤语句拼接为sql一并发送到数据库进行查询。 跟踪 原始SQL中的跟踪与Linq查询的跟踪方式一致。

    2.5K20

    C#的ORM 工具

    本文将深入探讨C#中几种流行的ORM工具,包括Entity Framework Core(EF Core)、Dapper、SqlSugar、FreeSql等,分析它们的核心特性、使用场景和最佳实践。...Entity Framework Core(EF Core)EF Core是.NET Core的跨平台ORM,是Entity Framework的轻量级、开源和可扩展版本。...它支持LINQ查询、更改跟踪、更新和架构迁移。核心特性跨平台支持:支持Windows、Linux和macOS。LINQ查询:支持强大的LINQ查询语法。...代码优先:支持Code First模式,允许从C#类直接创建数据库模式。复杂查询:支持复杂查询和操作,如分组、联接等。使用场景新项目:适合新项目或需要快速开发的场景。...核心特性高性能:接近原生ADO.NET的性能。简单易用:API简单直观,易于上手。扩展性:可以轻松扩展到复杂的查询。使用场景性能要求高:适合对性能要求较高的场景。简单查询:适合执行简单的CRUD操作。

    2.3K11

    EF Core的增删改查

    如果需要后续变更,那么就需要在创建自定义EF Core 上下文类的时候,为之添加一个连接字符串的属性或者字段,以方便初始化的时候指定。...也就是说,如果你从EF Core的上下文获取了一个实体对象,对这个对象的某些值进行了修改。这时候EF Core其实已经记录了这个对象的修改。...3.花样查询 EF Core 支持Linq查询,所以在查询的时候可以使用Linq进行。...EF Core在调用 ToList的时候,会将已调用的方法和Linq转换成SQL语句,并正式向数据库发起查询。如果出现了在Linq中调用三方方法或者自己写的工具方法的话,可能会提示不受支持。...如果使用的Linq表达式,则没关系,EF Core在遇到这种情况的时候,会把数据库里所有数据都加载到上下文中,再执行后续的查询等操作。

    3.2K20

    EntityFramework 元数据 设计分析

    由于之前已经尝试使用过 EF CodeFirst CTP4,所以这次在EF4.1发布的第三天,在 OEA 框架中已经支持使用它来实现数据访问层。...细看前面截图中,MetadataItem 有一个 BuiltInTypeKind 属性,它的类型是一个枚举,例举了EF中目前所有支持的元数据类型,不同的子元数据类型重写这个属性来返回不同的值。...但是它们又不尽相同:Expression 是表示编程语言中的表达式,而这些表达式是固定的,我们不会也无法去对它进行扩展;但是 EF 中元数据却是可以任意扩展的,这点可以从 BuiltInTypeKind...属性的名字中看出,它表示的是“系统内置的类型”,当然,也可以从 MetadataProperty 中的属性 PropertyKind 枚举看出,它有两个值: ?...所以,要对 EF 的元数据进行强类型查询,首先要了解整个元数据的结构,然后借助 Linq 中的 OfType 方法来进行查询。

    84780

    用事实说话,成熟的ORM性能不是瓶颈,灵活性不是问题:EF5.0、PDF.NET5.0、Dapper原理分析与测试手记

    Content(内容)字段也查询出来了,这要是我查询个文章列表,这些内容字段不仅多余,而且严重影响性能,为啥不能只查询我需要的字段到ORM?...2,Linq2Sql&EF:   2008年,随着.NET 3.5和VS2008发布,MS的官方ORM框架Linq2Sql也一同发布了,它采用Linq语法来查询数据库,也就是说Linq是MS的ORM查询...但是,LINQ to SQL是一个不再更新的技术。其有很多不足之处,如,不能灵活的定义对象模型与数据表之间的映射、无法扩展提供程序只能支持SQL Server等。...到了2009年8月,坊间已经到处流传,Linq2Sql将死,EF是未来之星,我们当时有一个客户端项目,准备用EF来访问SQLite。...结果项目做完,两部分模块进行对比,发现用EF的模块,访问速度非常的慢,查询复杂一下直接要5秒以上才出结果,对这些复杂的查询不得不直接用SQL去重写,而自此以后,我们公司再也没有人在项目中使用EF了,包括我也对

    4.2K90

    盘点 .NET 比较流行的开源的ORM框架

    支持 Join 查询、Union all 、Subquery 支持配置查询 支持 DbFirst 从数据库导入实体类,或使用生成工具。...查询接口类似于 LINQ。您可以使用 Chloe.ORM 通过 lambda 查询 LINQ 之类的数据并执行任何操作(查询 | 组查询 | 聚合查询 | 插入 | 批量更新 | 批量删除)。...EF提供变更跟踪、唯一性约束、惰性加载、查询事物等。 开发人员使用Linq语言,对数据库操作如同操作object对象一样省事。 EF有三种使用场景: 1、从数据库生成Class。...(国外) LINQ to DB 是最快的 LINQ 数据库访问库,在 POCO 对象和数据库之间提供了一个简单、轻量、快速且类型安全的层。...更好的参数替换支持,包括从对象属性中获取命名参数。 通过使用 DynamicMethod 生成消除 Linq 和快速属性分配来获得出色的性能。 查询语言是好的 ole SQL。

    4.2K42

    2022年了有哪些值得推荐的.NET ORM框架?

    EF/EF Core Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术,EF Core 是适用于 .NET 的现代对象数据库映射器...它支持 LINQ 查询、更改跟踪、更新和架构迁移。...查询接口类似于 LINQ。您可以使用 Chloe.ORM 通过 lambda 查询 LINQ 之类的数据并执行任何操作(加入查询 | 组查询 | 聚合查询 | 插入 | 批量更新 | 批量删除)。...LINQ to DB 是最快的LINQ数据库访问库,在POCO对象和数据库之间提供了一个简单、轻量、快速且类型安全的层。...这种方法更容易推理您的数据访问,从而清楚地知道什么 SQL 在什么时间执行,同时减轻意外行为、隐式 N+1 查询和重对象关系映射器 (ORM) 中普遍存在的泄漏数据访问。

    5.9K11

    .NET面试基础知识

    深入了解.net的基本概念 访问级别的访问修饰符 ? Private访问限制在包含它的类中。在下面的图中,privateA只能在ClassA中访问,其他类无法访问它。...类型成员(字段、属性、构造函数、方法等)可以拥有所有的访问修饰符。 类及其成员的默认访问修饰符 ? 如果没有指定访问修饰符, 内部是类的默认值, 成员默认为private。...IQueryable 们都可以用于向前数据访问。 ? IEnumerable 以从内存集合中查询数据(比如,列表) 它在内存中加载数据(服务器端到客户端),同时从数据库查询数据,然后过滤客户端数据。...不支持自定义查询。 不支持延迟加载。 适合于LINQ-to-Object或LINQ-to-XML。...支持自定义查询(CreateQuery, Execute方法)。 支持延迟加载。 linq to sql IComparable vs.

    84520

    应该在项目中使用EF Core吗?

    让我们从优点开始,详细的介绍图1.11中的每一个块 最新一代 我从LINQ to SQL切换到了EF 4,因为EF是未来发展的方向,而LINQ to SQL不会再投入更多的精力....这是我使用EF的主要原因之一 EF Core对开发人员很友好,即使我没有编写最良好的代码也往往会创建有效的查询....大部分格式正确的LINQ查询都可以正常工作,尽管它们可能无法被转换为性能最佳的SQL,不过一个正确有效的查询代码是一个很好的开始(我们可以再优化)....如果你想要稳定,可以选择EF6.x或其他数据库访问技术 保持高性能 对于数据库性能问题,我不会说EF Core开箱即用,它拥有魔法可以生成漂亮的SQL和快速数据摄取带来极高的数据库访问性能. -....这是简便的代价: EF Core内部所有的”魔法”都不如手工编写的SQL好,但是你可能会惊讶它的魔法还是有点料的 幸运的是我们对此做一些措施.在我的项目中,我发现只有5%到10%的查询是需要手动调优的关键查询

    1K40

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

    当第一个断点被击中时,我们可以看到本地字段值已被分配。 让我们点击“继续”并检查数据库中的文档。我们可以看到新字段尚未添加。让我们跳过将结束程序的“保存更改”调用。...由于 EF Core 已经支持语言集成查询 (LINQ) 语法,因此使用 C# 编写强类型查询变得很容易。...根据模型类中可用的字段,我们可以尝试从我们的收藏中查找一些有趣的电影。假设我想查找所有评级为“PG-13”且情节包含单词“shark”的电影,但我希望按标题字段对它们进行排序。...摘要 我们能够使用 MongoDB EF Core 提供程序和 MongoDB Atlas 来展示不同的功能,例如动态向实体添加属性、利用 Escape Hatch 创建索引、通过 LINQ 执行复杂查询以及演示新添加的事务和乐观并发支持...了解更多 要了解有关 EF Core 和 MongoDB 的更多信息: 请参阅 EF Core 文档,了解有关使用 EF Core 访问各种数据库的更多信息。

    7110

    2022年了有哪些值得推荐的.NET ORM框架?

    EF/EF Core Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术,EF Core 是适用于 .NET...它支持 LINQ 查询、更改跟踪、更新和架构迁移。...查询接口类似于 LINQ。您可以使用 Chloe.ORM 通过 lambda 查询 LINQ 之类的数据并执行任何操作(加入查询 | 组查询 | 聚合查询 | 插入 | 批量更新 | 批量删除)。...LINQ to DB 是最快的LINQ数据库访问库,在POCO对象和数据库之间提供了一个简单、轻量、快速且类型安全的层。...这种方法更容易推理您的数据访问,从而清楚地知道什么 SQL 在什么时间执行,同时减轻意外行为、隐式 N+1 查询和重对象关系映射器 (ORM) 中普遍存在的泄漏数据访问。

    3.9K20

    为什么LINQ to XML的性能要优于XmlDocument?

    他丫的对XML 数据流的访问是只读的。 其次,LINQ to XML有一位出色的父亲——Linq。...循环访问节点,为基于表达式计算的结果集选择适当的节点。 与相应的 LINQ to XML 查询完成的工作相比,这需要执行非常多的工作。...当必须操作大型数据集合,特别是在包含一系列链接的查询或操作的程序中操作时,延迟执行可以大大改善性能。 在最佳情况下,延迟执行只允许对源集合的单个循环访问。...LINQ 技术广泛应用了延迟执行,包括在核心 System.Linq 类的成员和不同 LINQ 命名空间中的扩展方法(如 System.Xml.Linq.Extensions)中使用。...而且Linq to SQL的儿子EF正在挽回她的名声,如果你没用过,请不要说他不行,如果你用的不当,请也别说他不行。 懒人技术都是懒人发明的,但是往往就是这些懒人推动了技术的前进。

    1.1K50
    领券