问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

如何引入entityframework框架

发布网友 发布时间:2022-04-21 17:32

我来回答

1个回答

热心网友 时间:2022-04-09 23:11

  先简单说一下如何创建环境。如果你对这些步骤了如指掌,请直接跳过。

  1. 在Visual Studio中创建一个示例工程。最简单的莫过于ConsoleApplication

  2. 在工程中添加ADO.NET Entity Data Model。

  选择其中的两个表作为示例,表Teacher和表Course

  添加edmx之后,Visual
Studio为自动帮我们生成/添加所有需要的文件和内容,然后我们就可以开始在代码中操作数据库了。来看看在EF中几种不同的数据加载方式。

  

  惰性加载(Lazy Loading)

  默认情况下,EF会使用惰性加载方式加载数据,即ctx.Configuration.LazyLoadingEnabled = true;
在下面的代码中,外层循环会执行一次查询,并将返回的结果存放在变量q中。而内层循环会在每一次循环过程中独立进行查询,所以,如果数据库表Teacher中有100条记录而Course有1000条记录,那么整个过程将产生1001次查询。

  using (var ctx = new SchoolDBEntities())
{
var q = from t in ctx.Teachers
select t;

foreach (var teacher in q)
{
Console.WriteLine("Teacher : {0}", teacher.TeacherName);
Console.WriteLine("Respective Courses...");

foreach (var course in teacher.Courses)
{
Console.WriteLine("Course name : {0}", course.CourseName);
}

Console.WriteLine();
Console.ReadKey();
}
}

  下面是程序执行的结果以及在SQL Server
Profiler中的跟踪记录。可以清楚地看到,对表Teacher只进行了一次查询,由于该表只有8条记录,于是在内层循环中又分别产生了8次对表Course的查询。

  在某些场合下,这种情况是可以接受的。你完全可以根据需要来控制内层循环何时显示加载数据,或者根本不加载数据。但是,在分层结构的应用程序中,上述代码结构并不适用,因为内层循环需要依赖于外层的Context,也就是说它们是在同一个数据库上下文中完成的,如果尝试将内层循环的代码移到外面或者其它类中,则它将获取不到任何数据。

  

  显式加载(Explicit Loading)

  如果你想人为控制惰性加载的行为,可以尝试使用下面的代码。首先需要手动关闭EF的惰性加载,通过代码ctx.Configuration.LazyLoadingEnabled
= false;来完成。

  using (var ctx = new SchoolDBEntities())
{
ctx.Configuration.LazyLoadingEnabled = false;

var q = from t in ctx.Teachers
select t;

foreach (var teacher in q)
{
Console.WriteLine("Teacher : {0}", teacher.TeacherName);
Console.WriteLine("Respective Courses...");

// Conditionally load the child data
if (true)
{
ctx.Entry(teacher).Collection(c => c.Courses).Load();
}

foreach (var course in teacher.Courses)
{
Console.WriteLine("Course name : {0}", course.CourseName);
}

Console.WriteLine();
Console.ReadKey();
}
}

  注意内层循环只有在上面高亮显示部分的代码执行之后才会获取到数据,否则返回结果为0。通过添加判断条件,我们可以对数据加载方式进行控制,从而有效地减少程序与数据库交互的次数。大多数情况下,我们从数据库获取到的数据并不都是有用的,如果每次只有很少一部分数据有用,那么我们为什么不过滤掉那些无用的数据从而尽量较少数据交互的次数呢?

  

  预先加载(Eager Loading)

  如果你想让所有数据一次性全部加载到内存中,那么你需要使用.Include(Entity)方法。看下面的代码,

  using (var ctx = new SchoolDBEntities())
{
var q = from t in ctx.Teachers.Include("Courses")
select t;

foreach (var teacher in q)
{
Console.WriteLine("Teacher : {0}", teacher.TeacherName);
Console.WriteLine("Respective Courses...");

foreach (var course in teacher.Courses)
{
Console.WriteLine("Course name : {0}", course.CourseName);
}

Console.WriteLine();
Console.ReadKey();
}
}

  如果你查看SQl Server
Profiler中的跟踪信息,你会发现只有一次数据交互过程,即程序只通过一次查询便获取到了所有需要的数据。在分层结构中,该方法是最容易的,我们可以将数据库底层获取到的结果返回给上层,它不具有任何依赖项。同时,它也可以减少程序与数据库的交互次数。不过仍然有缺点,那就是如果数据量较大,一次性将所有数据载入内存往往并不是最明智的选择。.Include(Entity)方法允许级联使用,你可以预先加载具有多层级结构的数据。
零基础,手把手教你EntityFrameworkCore 基本用法

步骤一:环境准备 使用VS2022创建一个新的项目,选择 "ASP.NET Core Web API" 作为项目类型。 为项目命名并设置路径,确认项目启动正常。 引入EFCore 通过NuGet包管理器安装"MySql.EntityFrameworkCore"。 安装成功后,检查项目依赖。 创建表与映射 在数据库中手动创建user表,或使...

C# .Net ef(Entity Framework 6) SQLite配置使用(codefirst)_百度知 ...

1. 通过项目管理器安装以下Nuget包:System.Data.SQLite(x86/x64)、System.Data.SQLite EF6、System.Data.SQLite LINQ、SQLite.CodeFirst 和 Entity Framework。2. 新建ORMContext类继承DbContext,并创建Model类DeptInfo和EmployInfo。模型类需配置主键和自增主键。3. 运行操作示例代码,实现数据的增删查...

在mvc中创建webapi控制器使用entityframew

1、首先,在数据库中创建一张数据表,表名为Customer。2、其次,打开VisualStudio,新建项目。选择'ASP.NETWebApplication',命名为'WebApi'。接着要创建一个'WebAPI',在模板中选择'WebAPI',点击'确定'。3、然后,要添加一个类。右键点击这个webapi项目,添加一个'ADO.NETEntityDataModel'。添加'EFDesi...

如何使用Entityframework.Extended

先简单说一下如何创建环境。如果你对这些步骤了如指掌,请直接跳过。 1. 在Visual Studio中创建一个示例工程。最简单的莫过于ConsoleApplication 2. 在工程中添加ADO.NET Entity Data Model。 选择其中的两个表作为示例,表Teacher和表Course 添...

C# .Net ef(Entity Framework 6) SQLite配置使用(codefirst)_百度知 ...

在C# .Net环境中,利用Entity Framework 6进行SQLite数据库的配置与操作,尤其适用于codefirst方法。首先,确保在项目中安装必要的Nuget包,包括"System.Data.SQLite"、"System.Data.SQLite EF6"、"System.Data.SQLite LINQ"以及"SQLite.CodeFirst"和Entity Framework。这将为后续的数据库操作提供支持。在...

怎么引用dbentityvalidationexception

首先在项目所在的层中引用EntityFramework.dll文件,一般位置在项目中的:\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll中 然后在using System.Data.Entity.Validation;可以具体catch出哪个字段出的问题。希望对你有帮助

什么是Entity Framework

我们可以把它用用C/S的工程当中,也可以把它用到 B/S的工程当中。为了展示EntityFramework的使用方法,我们首先得建立一个例子解决方案。这个解决方案的最基础的普通三层结构,因为数据的访问主要靠EntityFramework来实现,所以数据访问层的实现基本看不出来了,使得整个解决方案好像就是个两层的一样。

如何建立一个Entity Framework的BaseContext

项目是基于数据库构建的,所以理所应当地采用DB First来构造实体类和DbContext类。于是想也没想就直接在项目上右键->添加->新建项->ADO.NET 实体数据模型。

MVC不用.NET ENTITY FRAMEWORK可以吗

可以,ENTITY FRAMEWORK是一种数据库访问技术,是微软的一个ORM框架。你可以使用其他的数据库访问技术,也可以使用别的ORM框架。不过EF从6.0版本后性能有了很大的改善,使用效果不错,学一下还是有好处的。

ADO.NET Entity Framework的用户端

当定义好 Entity Data Model 的 CS/MS/SS 之后,即可以利用 ADO.NET Entity Framework 的用户端来访问 EDM,EDM 中的数据提供者会向数据来源访问数据,再传回用户端。目前 ADO.NET Entity Framework 有三种用户端4:Entity ClientEntity Client 是 ADO.NET Entity Framework 中的本地用户端 (Native ...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
能推荐一些男扮女装进女校的动画片吗?女扮男装进男校的也可以!_百度知 ... 桂花怎么泡酒的方法教程 超咔哇伊的动画片 半月板撕裂的中医治疗 越南的玲妹妹分享去中国留学,要准备些什么东西[越南网友评论] 姐姐名字里有玲字那么一般妹妹名字里会出现什么字 一起来捉妖聆妹妹怎么升级_聆妹妹技能属性与升级详解 女的叫Sunny玲妹妹 男的叫什么呢? 治疗半月板损伤有什么好方案 空调室外机铜管接头有水是怎么回事? 鲁智深的优缺点1 鸟不暇举,兽不得发。翻译一下意思谢谢 如何搭建.NET Entity Framework分布式应用系统框架 鲁智深的性格特点 兽不足道 此人何取而自贻患耶 还有什么深意 odac Entity Framework连接oracle,该怎么处理 水浒原著里鲁智深的禅杖是自己打的还是长老送的 兽不足道,此人何取而自贻患耶翻译 在《水浒传》原著中,鲁智深为什么会出家做了和尚? 如何用Entity Framework 6 连接Sqlite数据库 兽不足道,此人何取而自贻患耶?这句话除了对狼表... 命名空间"System.Data.Entity"中不存在类型或命名... 文言文翻译:兽不足道,此人何取而自贻患耶? Entity Framework是什么,我电脑上安装了。net4.0... 兽不足道的译文 请教Entity FrameWork4.1框架报错的问题 兽不足道,此人何取而自贻患耶?的意思 在那下载 .net 的entity framework 兽不足道中道的意思? 如何升级entityframework版本 狼子野心 里 “兽不足道”的翻译是什么? 影视中是武松擒方腊,为何原著却是鲁智深? 什么是Entity Framework Entity Framework于ADO.Net相比有什么优势? 鲁智深有什么性格特点 禽兽不如是什么意思 如何手工将Entity Framework 4.0升级到5.0 水浒传里鲁智深的最后结局是什么? 禽兽不如是什么意思? 如何使用entityframework 什么叫禽兽不如??? 鲁智深大闹五台山的故事简介 entityframework.sqlserver.dll 为什么不会引用 鸷兽不欲两头黄什么意思啊? 水浒中明明是鲁智深生擒方腊,影视剧为啥改成了武松? entity framework 性能真那么差 禽兽和禽兽不如的故事是什么 有人说鲁智深和宋江关系不好,那从哪里可以体现出... entity framework 6 依赖.net哪个版本 期死魔敌兽不?扰么人族前干怎
  • 焦点

最新推荐

猜你喜欢

热门推荐