You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署/安装C#/.NET应用时如何创建全新SQLite数据库?

检查SQLite数据库是否存在并创建新库的实现方案

首先先拼接完整的数据库文件路径,避免仅依赖基础目录的模糊性:

var dbFileName = "YourDatabaseName.db";
var dbPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, dbFileName);

根据你使用EF的场景,提供两种实用实现方式:

方式一:用EnsureCreated创建无迁移支持的空库

适合不需要后续结构更新的简单场景,直接生成对应实体结构的干净数据库:

using (var context = new YourDbContext(dbPath))
{
    if (!File.Exists(dbPath))
    {
        // 创建数据库及对应表结构(不会生成迁移记录)
        context.Database.EnsureCreated();
        Console.WriteLine("全新空数据库已创建");
    }
    else
    {
        Console.WriteLine("数据库已存在,跳过创建");
    }
}

注意:EnsureCreated不支持EF迁移功能,后续如果修改实体结构,无法通过迁移工具更新数据库,仅适合结构固定的小型应用。

方式二:用迁移创建支持后续更新的数据库

如果需要后续通过EF迁移维护数据库结构,先确保你已经在开发阶段生成了初始迁移(执行Add-Migration InitialCreate命令),再用以下代码:

using (var context = new YourDbContext(dbPath))
{
    if (!File.Exists(dbPath))
    {
        // 应用所有迁移并创建数据库(包含迁移记录)
        context.Database.Migrate();
        Console.WriteLine("全新数据库已通过迁移创建");
    }
    else
    {
        Console.WriteLine("数据库已存在,跳过创建");
    }
}

这种方式创建的数据库支持后续迁移操作,修改实体结构后可生成新迁移并更新数据库。

补充:DbContext配置示例

确保你的DbContext正确配置SQLite连接:

public class YourDbContext : DbContext
{
    private readonly string _dbPath;

    public YourDbContext(string dbPath)
    {
        _dbPath = dbPath;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite($"Data Source={_dbPath}");
    }

    // 声明你的实体集合
    public DbSet<YourEntity> YourEntities { get; set; }
}

内容的提问来源于stack exchange,提问作者BeQuiet21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:35:26