簡體   English   中英

vanilla MVC 項目登錄需要哪些表?

[英]What tables are needed for vanilla MVC project login?

我開始學習 MVC,我發現默認的以下部分,vanilla MVC-project 管理對數據庫的實際調用以進行注冊。

public async Task<ActionResult> Register(RegisterViewModel model)
{
  if (ModelState.IsValid)
  {
    var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
    var result = await UserManager.CreateAsync(user, model.Password);
    if (result.Succeeded)
    {
      await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
      return RedirectToAction("Index", "Home");
    }
    AddErrors(result);
  }
  return View(model);
}

但是,當我到達這一行時:

var result = await UserManager.CreateAsync(user, model.Password);

我遇到了一個異常,據我所知,這是因為數據庫中沒有與模型相對應的表。

自數據庫創建以來,支持“ApplicationDbContext”上下文的模型已更改。

我不想使用代碼優先。 我可以手動創建我的表並且仍然能夠使用UserManager東西嗎? 表/列將被稱為什么?

相反,我可以在我的項目中的哪個位置控制正在讀取的現有數據庫中的哪些表/列?

我現在有點困惑,經過幾個小時的研究,我意識到我需要一些指導。 我已經完成了 EF 的工作,所以我習慣於查找與 DB 模式相對應的模型,但在這種情況下,我找不到任何具有類似於用戶名密碼等屬性的類...

首先,您確實希望使用 Code First,即使您正在使用現有數據庫執行 Code First(是的,我知道。這似乎矛盾,但完全可以接受)。 不推薦使用模型優先和數據庫優先。

其次,如果您的問題是您有一個現有的數據庫,那么最好的辦法是創建一個單獨的臨時 MVC 5 與個人身份驗證項目,讓它創建它的數據庫,然后將表復制到您現有的數據庫中。

我對 MVC 還是很陌生,但我已經使用 MVC5 有一段時間了。 我發現默認情況下,它會先執行代碼。 我沒有嘗試將它切換到其他東西,但是當您第一次運行該程序時,它會為您構建數據庫。 對其運行方式的任何更改都需要您更新數據庫和/或啟用遷移。 它有許多默認使用的字段,但我建議運行它,以便它可以為您構建數據庫。

對於您在何處創建表的問題,其中大部分是在用於身份驗證的 NuGet 包中的幕后完成的。 想象一下,如果您包含System.Linq; 要在您的代碼中使用一些 Linq,它會為您處理其余的工作。 需要注意的是,如果您想稍微更改表,請轉到模型文件夾中的 IdentityModels.cs 文件,然后向下滾動到OnModelCreation(DbModelBuilder modelBuilder)函數。 這是它修改和向數據庫添加表或列的地方。 每次更改時,您都需要更新數據庫(包管理器控制台 > 更新數據庫)。

要考慮的另一件事是,如果您不希望它這樣做,您將需要創建一個不包括身份驗證的 MVC 項目並從頭開始執行該部分。

如果這些都沒有幫助,你希望用它做什么?

另外,為了給您提供一些資源供您查看,microsoftvirtualacademy.com 有一些關於 MVC5 的視頻,但如果您剛剛接觸 MVC,則值得查看。

編輯:我還應該指出,MVC 會自動為您處理生成的數據庫中的所有內容。 有多種方法可以修改它的工作方式,但總的來說,它所做的調用都是自動完成的。 您可以在函數和 SQL 查詢中編碼以供您使用的任何額外內容都是單獨的,並讓 MVC 處理身份驗證數據庫。

暫無
暫無

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

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