[英]ASP.NET MVC Core: Error occurs after adding IdentityUser
我正在學習構建一個ASP.NET MVC Core Web應用程序。 一切正常,直到我開始向其中添加Identity
。
注冊用戶可以創建許多職位 。 我使用該項目隨附的ApplicationUser.cs
作為User 。 我為所有其他實體創建了另一個DbContext
。
模型中的ApplicationUser.cs
:
public class ApplicationUser : IdentityUser
{
// CUSTOM PROPERTIES
public string Name { get; set; }
public ICollection<Job> Jobs { get; set; }
}
模型中的Job.cs
:
public class Job
{
public int ID { get; set; }
public string Title { get; set; }
// contains other properties
public string ApplicationUserID { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
ApplicationDbContext.cs
:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
當我在Job.cs
添加這兩Job.cs
,錯誤彈出。
public string ApplicationUserID { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
錯誤== >>
未處理的異常:System.Exception:無法為類型“ MyProject.Startup”上的方法“配置”的參數“上下文”解析類型為“ MyProject.Data.JobDbContext”的服務。 ---> System.InvalidOperationException:實體類型'IdentityUserLogin'需要定義一個主鍵。
我知道有些線程正在討論相同的錯誤,但是這些答案並沒有真正的幫助。
您的問題是兩種不同的情況。
JobDbContext
包含Job
,它引用ApplicationUser
,它JobDbContext
此上下文中,但是由EF自動添加,因為您已鏈接到它。 並且此ApplicationUser
(它的父IdentityUser
)包含登錄集合( IdentityUserLogin
),該集合也不是此上下文的一部分,而是由EF自動添加的,依此類推...所有這些類都在OnModelCreating
IdentityDbContext
中配置, OnModelCreating
在JobDbContext
這就是為什么你看到這個錯誤-你沒有說明鍵/索引/這個班的引用JobDbContext
。
您應該將兩個DbContext合並為一個,或者刪除public virtual ApplicationUser ApplicationUser { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
從Job
類和人工管理相關對象(確保引用完整性,做延遲加載等)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.