我需要用我的 Asp.Net API 創建一個 ApplicationUser(IdentityUser 的派生類),我需要在我的 Asp.net MVC 使用的同一個資料庫中創建它。我的請求有效,因為它給了我 200 個回應,但我的用戶不在 EntityFramework 自動生成的 AspNetUser 表中。
[HttpPost]
public async Task<ActionResult> Register(RegisterDTO register)
{
ApplicationUser user = new ApplicationUser();
if (register.Password == register.PasswordConfirm)
{
user.UserName = register.Email;
user.Email = register.Email;
}
else
{
return StatusCode(StatusCodes.Status500InternalServerError, new { Message = "Le mot de passe et sa confirmation ne sont pas identiques." });
}
var identityResult = await userManager.CreateAsync(user, register.Password);
if (!identityResult.Succeeded)
{
return StatusCode(StatusCodes.Status500InternalServerError, new { Error = identityResult.Errors });
}
return Ok();
}
這是我的 api 暫存器
services.AddDbContext<CegesDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddScoped<IUnitOfWork, UnitOfWork>();
services.AddScoped<ICegesServices, CegesServices>();
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddDefaultTokenProviders().AddDefaultUI()
.AddEntityFrameworkStores<CegesDbContext>();
這是我的 api 的啟動
public class ApplicationUser : IdentityUser
{
public List<Entreprise> Entreprises { get; set; }
}
這是我在 Core 專案中的 ApplicationUser 類
我不知道在這里做什么。我需要為我的 ApplicationUser 創建我的 on Create 方法還是我遺漏了什么?
uj5u.com熱心網友回復:
檢查 DefaultConnection 是否指向 appsettings.json 和 appsettings.Developer.json 中的正確資料庫(如果該檔案存在)。
我還假設 userManager.CreateAsync 作業正常并且只是 AspNetCore.Identity 的一部分。
我的下一個建議是不要在這樣的兩個專案中拆分模型/資料訪問層。而是創建一個共享專案并從中參考您的其他專案。
在 Visual Studio 中,這可以通過右鍵單擊專案,選擇添加,選擇專案參考并檢查要參考的專案來完成。
在這里,您可以管理整個資料訪問層 (DAL),并在任何其他專案中參考它,而無需擔心在可能發生沖突的兩個位置維護它。
如果資料庫遷移記錄不匹配,則無法使用用戶遷移更新資料庫。您需要從現有位置添加用戶,假設您由于 AspNetUser 表而首先使用代碼。
TL;DR 將您的資料訪問層(模型、dbContext、遷移等)添加到 C# 共享專案并在您的 MVC 和 Web API 專案中參考它以保持一致性并減少未來的維護作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/390088.html
標籤:C# 实体框架 asp.net 身份 存储库模式 n层架构
上一篇:在EF6中保存之前丟棄無效物體
