EF框架是微软封装好一种ADO.NET数据实体模型,将数据库结构以ORM模式映射到应用程序中。
优点:
- 简洁的Linq to Sql语句大大提高了开发人员的效率,不要再写复杂的sql语句;
- 不再需要再管应用程序如何去连接数据库;
- EF可以用作用于数据服务和OData Service的基础设施;
缺点:
- 由于linq语句编译之后就是sql,对于这种自动生成的sql语句无法控制;
- EF的运行机制会消耗大量内存,大大降低了程序运行效率,从而导致降低了用户在客户端的体验效果;
- 一旦数据结构发生变化,需要更新EF数据model;有时还可能会出现找不到更新过的实体类这种情况;
EF框架使用步骤:
一、根据数据库生成实体类(webApi---Sqlserver数据库)
1.修改浏览器访问地址和端口,也可以在项目属性-调试里设置
也可以在项目的Program里设置:app.Run("http://*:8080");
2.引用几个NuGet程序包,能自动生成数据库对应的实体类(版本最好都统一,避免出现程序包冲突)
Microsoft.EntityFrameworkCore --6.0.0版本
Microsoft.EntityFrameworkCore.SqlServer --6.0.0版本(本机使用的是SqlServer数据库,如果要使用其它数据库,后缀名选用其它数据库的就行,例如XXX.MySql)
Microsoft.EntityFrameworkCore.Design --6.0.0版本
Microsoft.EntityFrameworkCore.Tools --6.0.0版本
3.在数据库中创建自己需要的表
4.视图-程序包管理控制台,输入指令:
Scaffold-DbContext -Force "Server=.;Database=EntityFrameWorkCore;uid=sa;Password=root;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context WebApiContext 回车就会自动创建数据库对应实体类
Server:后是数据库所在的主机的ip地址。本机使用.或者localhost都行
Models:存放自动创建的实体类的文件夹名(可以自己命名)
WebApiContext:直接操作数据库类的类名(可以自己命名),(有这个类后,不用我们再写连接数据的逻辑了,只需要使用这个类的实例调用实体类,就可以对实体类对应的数据库表进行CRUD操作)
5.可以手动在Controller文件夹长创建控制类(别忘了继承ControllerBase,加[ApiController]标识和[Route("")]根接口地址)。也可以自动创建,右击Controller文件夹---添加---控制器-空---(Api 控制器空/类---C#--ASP.NET Core ---Web---ASP.NET---API 控制器-空。即可自动创建
6.响应出现乱码解决
#region 响应中文乱码时,可以在Program启动类的Main函数中添加这行代码
builder.Services.AddControllersWithViews().AddJsonOptions(options =>
{
options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All