簡體   English   中英

如何在使用 EF 的 asp.net core 3.1 MVC 應用程序中正確使用我的 SQLite 數據庫?

[英]How do I properly use my SQLite db in my asp.net core 3.1 MVC application using EF?

所以我正在嘗試創建一個使用Identity的 ASP.NET Core 3.1 MVC 應用程序,到目前為止它運行良好。 我想向其中添加一個 SQLite 數據庫,以便我可以使用 EF(EntityFramework)Code First 存儲用戶等,這就是我所做的。

我首先使用 SQLite 創建了一個數據庫文件,因此我在桌面上的文件夾中有 Database.db 文件。

然后我嘗試查找有關如何實現它的文檔,但是文檔太多,而且它們都非常不同,所以我無法確定什么是實現它的正確方法。

我從設置我的上下文開始

public class UserContext : IdentityDbContext
{
    public DbSet<User> Users { get; set; }
}

public class User : IdentityUser
{
    public string CustomerID { get; set; }

    public string SubscriptionID { get; set; }

    public int IsActive { get; set; }
}

超級簡單,然后我將 Startup.cs 中的 ConfigureServices 方法修改為AddIdentity

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.AddIdentity<User, IdentityRole>().AddEntityFrameworkStores<UserContext>();

}

完美,現在我添加了身份。 偉大的。

這是問題,我希望能夠創建初始遷移以在我的 database.db 文件中創建一個表,但我不知道將 connectionString 放在哪里以及如何訪問它。

我在一些論壇上讀到我應該將它存儲在 appsettings.json 中,但是 connectionString 會是什么樣子,因為它是我磁盤上的一個文件?

我不相信這會奏效

"ConnectionStrings": {
    "sqlConnection": "Server=C:\\Users\\user\\Desktop\\user\\Database\\Database.db;Database=Blogging;Trusted_Connection=True;\\\""
  }

或者是 connectionString 應該是什么樣子?

我如何正確地將 SQLite 數據庫文件實施到我的項目中,以便我可以訪問和創建我的第一個遷移?

我也沒有找到創建帶有密碼的 database.db 文件的方法,這可以更改嗎?

按照以下步驟,將創建 Sqlite 數據庫。

  • 刪除Microsoft.EntityFrameworkCore.SqlServer Nuget 包,因為您沒有使用 SqlServer

  • 添加Microsoft.EntityFrameworkCore.Sqlite Nuget 包

  • appsettings.json DefaultConnection 更改為:

"DefaultConnection": "Data Source=UserDatabase.db"

  • 刪除遷移文件夾。 注意:部署數據庫並升級表結構后,不應刪除 Migrations 文件夾。)

  • 打開包管理器控制台並運行: add-migration MigrationName

  • 打開包管理器控制台並運行: update-database

如果在包管理器中運行命令時遇到問題:您可以使用 dotnet 命令在終端窗口中運行相同的命令,只需注意它會在您運行命令的任何文件夾中創建一個 Migrations 文件夾:

  • dotnet ef 遷移添加遷移名稱
  • dotnet ef 數據庫更新

將創建 Sqlite 數據庫。

我也沒有找到創建帶有密碼的 database.db 文件的方法,這可以更改嗎?

  1. 刪除包Microsoft.Data.Sqlite

  2. 添加包Microsoft.Data.Sqlite.Core

  3. 添加包SQLitePCLRaw.bundle_e_sqlcipher

  4. appsettings.json DefaultConnection 更改為:

"DefaultConnection": "Data Source=UserDatabase.db;Password=ComplexPassword"

參考SQLite 默認不支持加密數據庫文件。 了解更多信息。

我建議首先將您的 db 文件放在與您正在處理的項目相同的目錄中。 從 microsoft docs 閱讀 EF Core 教程,他們在該示例中使用了 sqllite。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM