VS2022 webapi SQLite EFcore 最简单部署

一、我有一个sqlite单文件数据库,里面有一张表material,我想把这张表的数据,让c# webapi程序从服务器上输出成json,让客户端可以查询到数据。

二、使用VS2022,安装ASP.net相关开发组件。

三、VS2022中新建一个项目,项目的类型是webapi,用的是ASP.NET Core技术。

产生项目的时候,我们选择一个最小的mini项目,连控制层也不要了。

项目自动创建完成后,文件非常干净:

四、我们要使用微软提供的数据库ORM工具EntityFramework,它可以把数据库映射成程序对象,我们写程序时直接拿来使用就好。EntityFramework有2种,一个是EntityFramework6.4,使用在WINDOWS的平台,它提供ADO实体类的可视化设计器,可以在图像界面很方便的产生程序对象;第二个是EntityFrameworkCore7,它是微软向跨平台开发扩展的ORM工具,但它没有可视化的设计器,还好微软提供了一个tool工具类,我们可以用一条命令把映射的数据库对象直接生成。

博主发现用第一种配置SQLite产生映射对象很难,而第二种方式只需要几分钟。那么,我们就在项目中添加EntityFrameworkCore和工具类来连接上SQLite数据库。在NuGet中安装好就行。

Microsoft.EntityFrameworkCore.Sqlite,Microsoft.EntityFrameworkCore.Tools

然后,我们用一条命令,让EFcore从sqlite数据库给我生成数据库的映射对象出来。

Scaffold-DbContext "Data Source=D:\webapi\car.db" Microsoft.EntityFrameworkCore.Sqlite -OutputDir Models -UseDatabaseNames -DataAnnotations -Force

它把全部的数据库表映射成了对象,统统都给我弄到了项目Models目录中。

这里是tool工具类的这条命令的详细说明:

在 工具-NuGet包管理器-程序包管理控制台 输入

Install-Package Microsoft.EntityFrameworkCore.Tools //安装管理工具

PM> Scaffold-DbContext "Data Source=F:\XQX\个人项目\C#学习\SQLiteStudio.db" Microsoft.EntityFrameworkCore.Sqlite -OutputDir Models -UseDatabaseNames -DataAnnotations -Force

-OutputDir *** 实体文件所存放的文件目录

-ContextDir *** DbContext文件存放的目录

-Context *** DbContext文件名

-Schemas *** 需要生成实体数据的数据表所在的模式

-Tables *** 需要生成实体数据的数据表的集合

-DataAnnotations

-UseDatabaseNames 直接使用数据库中的表名和列名(某些版本不支持)

-Force 强制执行,重写已经存在的实体文件

五、我们改了一点原程序,把我们的material表返回给api加上。

执行一下,API运行正常。返回了material表的数据。

六、我们把这个程序功能,做成单独的执行程序来运行,首先弄一下发布功能。

到发布的目录看看,VS2022在目录中产生了好多类库文件,我们可以选择发布成单个的文件,这样简单了好多:

七、执行程序,提示有端口可以访问了。

打开浏览器,访问这个API的地址,我们得到了SQLite数据库material表中的json数据。这样我们为前后端彻底分离做好了准备。

最后,这个程序想要换一下端口,可以用这行代码:

builder.WebHost.UseUrls(new[] { "http://*:8090", "https://*:8091" });

最后,基于.net7 微软官方WEBAPI的使用说明:

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-7.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

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

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

打赏作者

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

抵扣说明:

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

余额充值