EF6+Sqlite3+MinimalApi 踩坑日记

这几天在学习.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

创建数据实体模型

这个比较简单,直接贴代码

public class User:BaseEntity
    {
        public int Id { get; set; }
        public string? UserName { get; set; }
        public string?  Password { get; set; }
        public string? Account { get; set; }
    }

创建DbContext

    public class YourContext:DbContext
    {
        public YourContext(DbContextOptions options): base(options) { }
        public DbSet<User> User { get; set; }
    }

设置数据库的ConnectionString

编辑Program.cs

var connectionString = builder.Configuration.GetConnectionString("YourTestDb") ?? "Data Source=YourTestDb.db";

这表示builder首先会去配置文件appSettings.json中寻找key="YourTestDb"的Value。
就像这样:

{
    "ConnectionStrings": {
        "YourTestDb": "Data Source=yourTestDb.db;foreign keys=true"
    },
    "Logging": {
        "LogLevel": {
            "Default": "Information",
            "Microsoft.AspNetCore": "Warning"
        }
    },
    "AllowedHosts": "*"
}

将DbContext添加到服务当中

编辑Program.cs

builder.Services.AddSqlite<YourContext>(connectionString);

总之Program.cs应该长这样

var builder = WebApplication.CreateBuilder(args);

// Use InMemory Database, 需要通过NuGet安装 EntityFramework.InMemory
//builder.Services.AddDbContext<YourContext>(options => options.UseInMemoryDatabase("items"));

// 使用Sqlite数据库作为开发时的持久化工具
var connectionString = builder.Configuration.GetConnectionString("YourTestDb") ?? "Data Source=YourTestDb.db";
builder.Services.AddSqlite<YourContext>(connectionString);

进行数据模型的迁移

这里容易困扰,首先微软的Doc是这样说的image

但是我并没有成功,dotnet 命令用的少,于是换了种方法。
进入项目的程序包管理控制台
使用Add-Migration YourProjectName命令
如图:
image
需要注意默认项目一定要选择需要进行Code First的项目

创建数据库实体

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

参考

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

posted @   fengcat2022  阅读(259)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示