我將這個問題作爲文檔發佈,因爲它花了我好幾個小時才找到這個簡單的問題。我正在使用VS15生成的原始MVC項目並嘗試對其進行修改。解決方案 - 實體類型ApplicationUser不是當前上下文的模型的一部分
錯誤:[出現InvalidOperationException:實體類型ApplicationUser是不是模型對當前環境的一部分]
我將這個問題作爲文檔發佈,因爲它花了我好幾個小時才找到這個簡單的問題。我正在使用VS15生成的原始MVC項目並嘗試對其進行修改。解決方案 - 實體類型ApplicationUser不是當前上下文的模型的一部分
錯誤:[出現InvalidOperationException:實體類型ApplicationUser是不是模型對當前環境的一部分]
您可能會收到此錯誤的原因有多種。這不是一個有保證的解決方法,但希望它能爲那裏的人節省一些時間。出現此錯誤通常是因爲您的應用程序正在使用默認的DbContext,而不是您打算使用的那個。
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext() : base("DefaultConnection") {}
}
該項目生成此自定義DbContext。您應該確保「DefaultConnection」是使用此類的項目的Web.config中的連接字符串或連接的名稱。
這是我的連接字符串。請注意,名稱是一樣的一個在上面的DbContext:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-AspnetIdentitySample-10_8_3;Integrated Security=True" providerName="System.Data.SqlClient" />
一旦你確信你的連接字符串建立,我們需要檢查綁定在NinjectWebCommon。
kernel.Bind<ApplicationDbContext>().ToSelf();
kernel.Bind<IUserStore<ApplicationUser>>().To<UserStore<ApplicationUser>>().WithConstructorArgument("context", kernel.Get<ApplicationDbContext>());
kernel.Bind<UserManager<ApplicationUser>>().ToSelf();
這是我在我的應用程序中發現錯誤的地方。第一行不是必需的,但是一個好主意。第二條線是最重要的。
UserStore有2個構造函數。第一個是空的。第二個參數是1,DbContext上下文。 Ninject的構造函數參數區分大小寫,必須命名爲「上下文」,以便Ninject正確選擇此構造函數。
Ninject綁定爲我節省了數天的調試時間。謝謝! – arnaudoff
感謝您發佈此消息,我很遺憾在調試之前需要花費數小時的時間進行調試。 – J3RM