.NET6中使用EF DbFirst和CodeFirst

Entity Framework(EF):微软官方提供的ORM工具,ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上。EF提供变更跟踪、唯一性约束、惰性加载、查询事物等。开发人员使用Linq语言,对数据库操作如同操作Object对象一样省事。
EF有三种使用场景,1. 从数据库生成Class,2.由实体类生成数据库表结构,3.  通过数据库可视化设计器设计数据库,同时生成实体类。对应三种编程方式:
1.DataBase First:在设计器中逆向生成Model,并有Model自动生成所有的类。
2.Model First:在设计器中创建Model,并用Model生成数据库。所有的类由Model自动生成。
3.Code First(又分New DataBase,Existing DataBase):代码优先,同Model First方式,区别在于不再需要EDM文件,所有的映射通过“数据注释”和“fluent API”进行映射和配置,"Code First"并不代表一定就必须通过数据类来定义模型,事实上也可以通过现有数据库生成数据类。

ORM:是将数据存储从域对象自动映射到关系型数据库的工具。ORM主要包括3个部分:域对象、关系数据库对象、映射关系。ORM使类提供自动化CRUD,使开发人员从数据库API和SQL中解放出来。
实例链接:.NET6EF_CodeFirst登录实例-C#文档类资源-优快云下载

.NET6中使用EF DbFirst

1、使用NuGet添加EF环境:

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.SqlServer.Design

Microsoft.EntityFrameworkCore.Tools

 2、打开VS"工具"--"NuGet包安装器"--"程序包管理器控制台",输入下面的命令:

Scaffold-DbContext "Data Source=.;Initial Catalog=YourDb;User ID=sa;Password=123456" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir Models -Context CustomerDbContext -Force

 控制台提示,Build succeeded表明安装成功,黄色提示为安全提示,提示应该把敏感词写入配置文件而不是直接暴露出来,下面的EF CodeFisrt例子中使用了配置文件方法。(命令执行时需要设置对应工程为启动项)

成功后,在资源管理器对应项目中将生成"Models"文件夹,"Models"文件夹包含数据库中的表类文件和CustomerDbContext.cs文件(EF数据库处理类)。

 

 3、添加操作数据库的类和方法,在方法使用CustomerDbContext操作数据库。

4、使用并运行(可设置断点查看具体执行和数据变化) 

 

 .NET6中使用EF CodeFirst

1、使用NuGet添加EF环境:

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Tools


2、添加数据库表类文件和操作文件(User.cs为表类文件,MyDbContext为操作文件继承DbContext):

3、添加EF连接字符串配置:

4、打开VS"工具"--"NuGet包安装器"--"程序包管理器控制台",输入下面连接EF初始化命令和更新命令:

初始化:add-migration init          更新:update-database

5、添加Dbcontext服务

//添加Dbcontext服务
builder.Services.AddDbContext<MyDbContext>(options =>
{
    var constr = new ConfigurationBuilder()
                 .SetBasePath(Directory.GetCurrentDirectory())
                 .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                 .Build()
                 .GetConnectionString("Default");
    options.UseSqlServer(constr);
});

 6、在控制器中注入DbContext并使用其方法:

7、如果表类有修改,使用add-migration init 和update-database可以直接更新对应数据库,本例中在users表中添加了Name字段:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无熵~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值