知方号

知方号

VS2023 webapi SQLite EFcore 最简单部署

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

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

三、VS2023中新建一个项目,项目的类型是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:webapicar.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表的数据。

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

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

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

打开浏览器,访问这个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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。