|
主题设置

卡片式面板通常用于非白色背景色的主体内

EF 连接 DB

EF(Entity Framework) 是一个对象关系映射(ORM)框架,开发人员可以直接操作实体(Entity),而不需要处理数据库表和 SQL 查询语句。EF 将实体映射到数据库表,并自动生成适当的 SQL 查询。

EF 和 ADO.NET 的区别

抽象层次

  • Entity Framework:Entity Framework 是一个对象关系映射(ORM)框架,它提供了高级的面向对象的数据访问。开发人员可以直接操作实体(Entity),而不需要直接处理数据库表和 SQL 查询语句。EF 将实体映射到数据库表,并自动生成适当的 SQL 查询。
  • ADO.NET:ADO.NET 是一种更底层的数据访问技术,它需要开发人员显式地编写 SQL 查询语句,并使用 SqlConnection、SqlCommand、SqlDataReader 等对象来执行查询和处理结果集。

开发效率

  • Entity Framework:由于提供了高级的 ORM 功能,使用 Entity Framework 可以大大提高开发效率。开发人员可以专注于面向对象的编程,而不必关心底层数据库的细节。EF 还提供了 LINQ(Language Integrated Query)的支持,使得查询更加直观和易于编写。
  • ADO.NET:使用 ADO.NET 进行开发需要开发人员具备更多的数据库和 SQL 知识。虽然可以通过封装和使用数据访问层(如 Repository 模式)来提高代码重用性,但仍然需要大量的手动编码来处理数据访问逻辑。

性能和控制

  • Entity Framework:Entity Framework 提供了自动化的数据库查询优化和缓存管理,可以帮助提高性能。但是,有时生成的 SQL 查询可能不够优化,特别是在复杂查询或大数据量的情况下。EF 也提供了原始 SQL 查询的功能,以及通过存储过程等方式来优化查询性能。
  • ADO.NET:由于直接使用 SQL 查询语句,开发人员可以更精确地控制执行的 SQL 查询。这使得在对性能要求高或需要特定优化的场景下,可以通过优化 SQL 查询来实现更好的性能表现。

学习曲线和复杂性

  • Entity Framework:学习 Entity Framework 需要掌握 ORM 的概念和 Entity Framework 的工作方式,对于初学者可能有一定的学习曲线。此外,EF 的自动化和抽象可能导致开发人员不清楚生成的 SQL 查询细节。
  • ADO.NET:虽然使用 ADO.NET 开发可能更接近数据库的底层操作,但它需要开发人员对 SQL 和数据库操作有深入的理解。这可能使得初始开发成本较高,但同时也使开发人员能够更灵活地优化和调整数据库操作。

创建 Web API

打开 Visual Studio,创建新项目

选择 “应用类型、平台、语言”,选择 “ASP.NET Web 应用程序(.NET Framework)”,点击 “下一步”

填写 “项目名称” 和 “解决方案名称”,然后 “创建”

创建 WEB API 应用程序

创建成功

配置数据库连接

在 Web.config 文件中,配置数据库连接:配置信息下载

创建实体类

创建 Models 文件夹,在文件夹中创建 Users 类。

创建数据库上下文

在 NuGet 包管理器中安装 EntityFramework

因为当前测试项目使用 .NET Framework 4.7.2 创建,经测试用 EF 方式只能连接 SqlServer 数据库。如果要连接 MySQL 数据库,则需要在 NuGet 包管理器中安装 Microsoft.EntityFrameworkCore,那么至少需要 .NET 6.0 。

安装完成后,创建数据库上下文 DefaultDbContext 类,引用 using System.Data.Entity;,继承 DbContext

创建 Daos 层

创建 Daos 文件夹,在文件夹中创建 UsersDao 类。UsersDao 下载

创建 Services 层

创建 Services 文件夹,在文件夹中创建 UsersService 类。UsersService 下载

创建 Controller 控制器

在 Controllers 文件夹上,右键→添加→Web API 控制器类,创建 UsersController 控制器。UsersController 下载

去掉 UsersController 控制器中默认的方法,写入获取 Users 的方法。

对 API 的访问路径进行设置,否则在调用 API 时,只能根据 API 的方法名判断是 GET 或 POST 方式(参数一样的 GET 或 POST 方法只能有一个),并且方法名不能拼接上其他字符,。

需要在 APP_Start 文件夹下的 WebApiConfig.cs 类中,对 Register 方法做如下修改:将 routeTemplate: "api/{controller}/{id}" 改为 routeTemplate: "api/{controller}/{action}/{id}"

调用 API

启动项目

ToList 查询所有

调用 API 进行查询

LINQ 条件查询

在 Dao 层中,通过数据库上下文,使用 LINQ 表达式编写查询条件。

SQL 语句查询

复杂条件的组合查询

可以根据传入的字段是否赋值,判断是否需要过滤。

下载项目

以上步骤中创建的项目可下载:EF 连接 DB