gpt4 book ai didi

c# - 实体类型 IdentityUser 不是当前上下文模型的一部分

转载 作者:可可西里 更新时间:2023-11-01 07:51:01 27 4
gpt4 key购买 nike

我看到与 this 相同的问题问题,但那里提出的情况似乎并不适用,所以我认为我有一个不同的问题。事实上,我在 SO 上看到了几个类似的问题,每个问题都有不同的原因和解决方案,所以我认为这个错误必须来自高层。也就是说……

我有一个 EF 代码优先数据库模型,我正在尝试使用 IdentityUser 来扩展我的 MVC 5 站点的标准注册。

我有扩展的 UserModel:

namespace MyMvcSite.Models 
{
public class UserModel : IdentityUser
{
public string BillingId { get; set; }
public virtual ICollection<DatabaseModel> Databases { get; set; }
}
}

还有我的上下文:

using MyMvcSite.Models;

namespace MyMvcSite.Web
{
public class AuthContext : IdentityDbContext<UserModel>
{
public AuthContext() : base("AuthContext") { }
}
}

现在,当我执行注册用户的代码时:

public async Task<IdentityResult> RegisterUser(UserModel user) 
{
user.Email = user.UserName;
var result = await _userManager.CreateAsync(user);

return result;
}

我收到这个错误:

The entity type IdentityUser is not part of the model for the current context.

我不明白这个错误是什么意思,因为看起来我的一切都是正确的。谁能告诉我可能出了什么问题???

我知道我的 connectionString AuthContext 是正确的,因为我以前使用过它。

最佳答案

当您将自定义用户类与 ASP.NET Identity 一起使用时,您必须确保明确指定自定义用户类类型 <T> UserManagerUserStore关于实例化。

private UserManager<UserModel> _userManager;

public AccountController()
{
AuthContext _ctx = new AuthContext();

UserStore<UserModel> userStore = new UserStore<UserModel>(_ctx);
_userManager = new UserManager<UserModel>(userStore);
}

或更短的形式(如您的回复评论):

private UserManager<UserModel> _userManager;

public AccountController()
{
AuthContext _ctx = new AuthContext();
_userManager = new UserManager<UserModel>(new UserStore<UserModel>(_ctx));
}

如果类型允许默认为IdentityUser当您想使用自定义类时,您将遇到您报告的错误。

关于c# - 实体类型 IdentityUser 不是当前上下文模型的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26208708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com