ASP.NET Core Using Sqlite

2024-07-02

筆記 ASP.NET Core 使用 Sqlite 作為儲存資料的資料庫的設定方式。

logo

說明

第一步先安裝 Microsoft.EntityFrameworkCore.Sqlite Nuget Package。

<ItemGroup>
  <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.6" />
</ItemGroup>

接著設定 appsettings.json 檔案,設定 Sqlite 的連線字串。

{
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=Todo.db"
  }
}

最後回到 Program.cs 設定 DbContext 的連線,同時啟用 Database Developer Page,可以輔助開發時進行除錯。

builder.Services.AddDbContext<TodoDbContext>(options =>
    options.UseSqlite(builder.Configuration.GetConnectionString("TodoDbContext")));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();

接著必須透過 Add-MigrationUpdate-Database 指令進行資料庫的更新。

但這邊我們採用另外的方式,讓部署後的應用程式自動建立資料庫。

using (var scope = app.Services.CreateScope())
{
    var services = scope.ServiceProvider;
    var context = services.GetRequiredService<TodoDbContext>();
    context.Database.EnsureCreated();
}

而如果想要達到 InMemory Database 的效果,可以加上 context.Database.EnsureDeleted(); 進行資料庫的清除,確保每次都是新的資料庫。