EF6+Sqlite3+MinimalApi 踩坑日记

打印 上一主题 下一主题

主题 805|帖子 805|积分 2415

这几天在学习.Net Web APi的开发,希望在开发环境使用相对自由点的Sqlite。使用Databse First 相对比较简单,而Code First搭建过程中遇到一些小问题,记录下来,希望能够帮助到掉入同样坑坑中的同学。
环境


  • VS2022
  • .Net 6.0
创建.Net Web Api项目,并且选择最小API

通过Nuget添加相关包

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.Tools
  • Microsoft.EntityFrameworkCore.Sqlite
创建数据实体模型

这个比较简单,直接贴代码
  1. public class User:BaseEntity
  2.     {
  3.         public int Id { get; set; }
  4.         public string? UserName { get; set; }
  5.         public string?  Password { get; set; }
  6.         public string? Account { get; set; }
  7.     }
复制代码
创建DbContext
  1.     public class YourContext:DbContext
  2.     {
  3.         public YourContext(DbContextOptions options): base(options) { }
  4.         public DbSet<User> User { get; set; }
  5.     }
复制代码
设置数据库的ConnectionString

编辑Program.cs:
  1. var connectionString = builder.Configuration.GetConnectionString("YourTestDb") ?? "Data Source=YourTestDb.db";
复制代码
这表示builder首先会去配置文件appSettings.json中寻找key="YourTestDb"的Value。
就像这样:
  1. {
  2.     "ConnectionStrings": {
  3.         "YourTestDb": "Data Source=yourTestDb.db;foreign keys=true"
  4.     },
  5.     "Logging": {
  6.         "LogLevel": {
  7.             "Default": "Information",
  8.             "Microsoft.AspNetCore": "Warning"
  9.         }
  10.     },
  11.     "AllowedHosts": "*"
  12. }
复制代码
将DbContext添加到服务当中

编辑Program.cs:
  1. builder.Services.AddSqlite<YourContext>(connectionString);
复制代码
总之Program.cs应该长这样
  1. var builder = WebApplication.CreateBuilder(args);// Use InMemory Database, 需要通过NuGet安装 EntityFramework.InMemory//builder.Services.AddDbContext(options => options.UseInMemoryDatabase("items"));// 使用Sqlite数据库作为开发时的持久化工具var connectionString = builder.Configuration.GetConnectionString("YourTestDb") ?? "Data Source=YourTestDb.db";builder.Services.AddSqlite<YourContext>(connectionString);
复制代码
进行数据模型的迁移

这里容易困扰,首先微软的Doc是这样说的
但是我并没有成功,dotnet 命令用的少,于是换了种方法。
进入项目的程序包管理控制台
使用Add-Migration YourProjectName命令
如图:

需要注意默认项目一定要选择需要进行Code First的项目
创建数据库实体

进入项目的程序包管理控制台
使用Update-Database命令
成功后就能在当前项目的根下看到对应的YourTestDb.db数据库文件,将文件的复制到输出目录属性更改为如果较新则复制即可。
参考

Entity Framework Core 工具参考 - Visual Studio 中的包管理器控制台

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

罪恶克星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表