当前位置: 首页 > news >正文

【面试】EntityFrameworkLinq面试题答案

解释使用实体框架的好处

我相信使用实体框架可以让各种技术专业人士,如计算机程序员、软件开发人员和由于软件提供的自动编码功能,数据库管理员可以轻松地存储和访问数据。该框架使用一种自动化机制,允许用户处理数据而无需编写复杂的代码,这可能允许专业人员快速输入和共享文件和信息。这个过程通过缩短他们执行的编码量来简化软件开发人员的角色。 Entity Framework 还可以减少公司的开发时间和成本,因为它可以使用自动编码系统

描述您可能使用实体框架的 3 种场景

第一个场景涉及开发人员,如果他们有一个现有的数据库,他们可以使用实体框架7 ;目前正在使用。他们可能希望将实体框架应用于现有数据库,而不是下载允许自动编码的新数据库。

第二种情况涉及想要为其域类创建数据库的专业人员,因为 Entity Framework 可以允许他们下载域属性并将它们存储为文件,如数据库表或列表。

第三种情况涉及想要自己设计数据库模式的专业人员,因为该框架允许用户使用自动化系统,这可能会使设计过程更容易。自动编码功能允许用户设计架构的每个部分,包括类、表和字段。

定义实体框架的主要组件

第一个组件是实体数据模型,它允许开发人员使用数据库模式使用三个-分层模型。这涉及到概念模型、映射模型和存储模型。

接下来,您将拥有 LINQ to Entities,这是一种编程语言,开发人员可以使用它来编写针对对象模型的查询。

第三个组件是实体 SQL,它是一种不同的查询语言,开发人员使用实体框架软件将数据转换为与存储相关的 SQL 查询。

实体 Client Data Provider 是将查询转换为框架数据库可以理解的 SQL 查询的下一个组件。

第五个组件是Net Data Provider,开发者可以使用它来促进数据库之间的交互。

最后一个组件是对象服务,它使开发人员能够访问特定数据库,以便他们可以返回数据以进行进一步分析。该组件允许用户将用户的数据直接转换为实体对象结构。

Entity 模型的三个不同部分是什么

Entity模型的第一部分是Conceptual模型,它由几个模型实体组成和每个实体关系。该模型的目的是确保数据库对象及其关系清楚地定义信息。下一个模型是 Mapping 模型,用户可以在其中映射和存储信息。

开发人员可以在执行映射模型时将他们在概念模型中映射的信息转换成表格。最后一个模型是存储模型,它作为系统后端数据的存储。通常,此模型包含表、存储过程和有关相关数据库关系的信息。

描述迁移的两种类型

迁移是一个软件工具,是实体框架的一个特性。它允许框架在用户更改模型中的信息时自动更新数据库模式。迁移的目的是防止系统丢失数据或错误下载新数据。

第一种迁移类型是自动迁移,它帮助实体框架自动迁移数据库,从而实现更快的数据传输过程。第二种迁移类型是基于代码的迁移。这允许用户在迁移数据时配置其他功能,例如更改表的大小或修改列的值。

如何提高LINQ性能问题

提升从数据库中拿数据的速度,可以参考以下几种方法:

1).在数据库中的表中定义合适的索引和键

2).只获得你需要的列(使用ViewModel或者改进查询)和行(使用IQueryable)

3).尽可能使用一条查询而不是多条

4).只为了展示数据,而不进行后续修改时,可以使用AsNoTracking。它不会影响生成的SQL,但它可以令系统少维护很多数据,从而提高性能

5).使用Reshaper等工具,它可能会在你写出较差的代码时给出提醒

什么是IEnumerable

IEnumerable及IEnumerable的泛型版本IEnumerable是一个接口,它只含有一个方法GetEnumerator。Enumerable这个静态类型含有很多扩展方法,其扩展的目标是IEnumerable。

实现了这个接口的类可以使用Foreach关键字进行迭代(迭代的意思是对于一个集合,可以逐一取出元素并遍历之)。实现这个接口必须实现方法GetEnumerator。

IEnumerable的缺点有哪些

IEnumerable功能有限,不能插入和删除。

访问IEnumerable只能通过迭代,不能使用索引器。迭代显然是非线程安全的,每次IEnumerable都会生成新的IEnumerator,从而形成多个互相不影响的迭代过程。

在迭代时,只能前进不能后退。新的迭代不会记得之前迭代后值的任何变化。

延迟执行 (Lazy Loading)是什么

大部分LINQ语句是在最终结果的第一个元素被访问的时候(即在foreach中调用MoveNext方法)才真正开始运算的,这个特点称为延迟执行。一般来说,返回另外一个序列(通常为IEnumerable或IQueryable)的操作,使用延迟执行,而返回单一值的运算,使用立即执行。

IEnumerable是延迟执行的,当没有触发执行时,就不会进行任何运算。Select方法不会触发LINQ的执行。一些触发的方式是:foreach循环,ToList,ToArray,ToDictionary方法等

LINQ可视化工具简单介绍一下

LINQPad工具是一个很好的LINQ查询可视化工具。它由Threading in C#和C# in a Nutshell的作者Albahari编写,完全免费。它的下载地址是http://www.linqpad.net/

进入界面后,LINQPad可以连接到已经存在的数据库(不过就仅限微软的SQL Server系,如果要连接到其他类型的数据库则需要安装插件)。某种程度上可以代替SQL Management Studio,是使用SQL Management Studio作为数据库管理软件的码农的强力工具,可以用于调试和性能优化(通过改善编译后的SQL规模)。

LINQPad支持使用SQL或C#语句(点标记或查询表达式)进行查询。你也可以通过点击橙色圈内的各种不同格式,看到查询表达式的各种不同表达方式:

Lambda:查询表达式的Lambda表达式版本,

SQL:由编译器转化成的SQL,通常这是我们最关心的部分,

IL:IL语言

LINQ to Object和LINQ to SQL有何区别

LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库中执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable的一系列方法,最终在C#内部执行。LINQ to Object的数据源总是实现IEnumerable(所以不如叫做LINQ to IEnumerable),相对的,LINQ to SQL的数据源总是实现IQueryable并使用Queryable的扩展方法。

将查询表达式转换为SQL语句并不保证一定可以成功。

除了EF,列举出你知道的ORM框架

dapper EntityFramework、 EJB、Hibernate、IBATIS、SqlSugar 、freesql

在哪些类型额项目中你会选择EF? 为什么?

这个要结合EF的特点来说:EF主要是以面向对象的思想来做数据库数据操作,对Sql语句能力没什么要求,开发使用效率高!便于上手,一般来说,使用EF框架,肯定会比直接使用ADO.NET,消耗的时间多一些。所以在一般企业级开发,管理型系统,对数据性能要求不是特别高的情况下,优先选择EF,这样可以大大的推进开发效率!如果像一些互联网项目中,对性能要求精度很高!可以另外做技术选型,选择原生ADO.NET。

请说明EF中映射实体对象的几种状态

Detached:该实体未由上下文跟踪。刚使用新运算符或某个 System.Data.Entity.DbSet Create 方法创建实体后,实体就处于此状态。

Unchanged:实体将由上下文跟踪并存在于数据库中,其属性值与数据库中的值相同。

Added:实体将由上下文跟踪,但是在数据库中还不存在。

Deleted:实体将由上下文跟踪并存在于数据库中,但是已被标记为在下次调用 SaveChanges 时从数据库中删除。

Modified:实体将由上下文跟踪并存在于数据库中,已修改其中的一些或所有属性值。

相关文章:

  • 宝塔部署node项目
  • 配对交易之统计套利配对:协整(cointegration)
  • [附源码]Python计算机毕业设计Django演唱会门票售卖系统
  • [附源码]计算机毕业设计快转二手品牌包在线交易系统Springboot程序
  • 一个支持 CRUD 快速开发的 Web 框架,用着太爽
  • 2小时开发《点球射门游戏》,动画演示思路(上),代码已开源
  • 【Opencv实战】颜色测试:你是色盲/色弱吗?从零带你了解色彩与原理,简单的颜色识别小程序,感动.jpg(全是干货)
  • windows服务开发
  • leetcode-每日一题-二进制表示中质数个计算置位(简单,popcount算法)
  • 利用styleSheet,避免js手动频繁修改样式
  • 火爆的超级人工智能ChatGPT,唯独鄙视中国人
  • [附源码]Python计算机毕业设计Django医院挂号住院管理系统
  • 前端工程师常考手写面试题指南
  • 易基因|m6A去甲基化酶ALKBH5通过降低PHF20 mRNA甲基化抑制结直肠癌进展 | 肿瘤研究
  • Git 在gitconfig 中的多用户配置
  • 数据结构的起航,用C语言实现一个简约却不简单的顺序表!(零基础也能看懂)
  • 职场经验:为什么要学习自动化测试?过来人告诉你答案
  • 2022系统分析师论文真题
  • C++ Reference: Standard C++ Library reference: Containers: deque: deque
  • RabbitMQ——RabbitMQ的六种工作模式详解
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉