在新的Entity Framework 6.1 beta / pre-release中,他们包含了更改数据库中使用的Id
列的数据类型的选项。我正在研究如何实现这一点并得出以下结论:
public class ApplicationUser : IdentityUser<int, IdentityUserLogin<int>,
IdentityUserRole<int>, IdentityUserClaim<int>>, IObjectState
{
}
public class AuthenticationContext : IdentityDbContext<ApplicationUser, IdentityRole<int, IdentityUserRole<int>>, int, IdentityUserLogin<int>, IdentityUserRole<int>, IdentityUserClaim<int>>
{
public AuthenticationContext()
: base("ConnectionString")
{
}
}
public AccountController() : this(new UserManager<ApplicationUser, int>(new UserStore<ApplicationUser, IdentityRole<int, IdentityUserRole<int>>, int, IdentityUserLogin<int>, IdentityUserRole<int>, IdentityUserClaim<int>>(new AuthenticationContext())))
{
}
public AccountController(UserManager<ApplicationUser, int> userManager)
{
UserManager = userManager;
}
public UserManager<ApplicationUser, int> UserManager { get; private set; }
运行应用程序(默认的EF / MVC应用程序)时,单击“注册”时会出现以下错误:
EntityFramework.dll中出现'System.InvalidOperationException'类型的异常,但未在用户代码中处理 其他信息:未映射类型'Microsoft.AspNet.Identity.EntityFramework.IdentityRole2 [System.Int32,Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole1 [System.Int32]]'。使用Ignore方法或NotMappedAttribute数据批注检查未明确排除类型。验证类型是否已定义为类,不是原始类型还是通用类型,并且不从EntityObject继承。
显然我做错了什么,但我不确定应该调整什么才能让它发挥作用。有什么建议吗?
答案 0 :(得分:6)
我会尝试按照以下示例:“使用主键的类型可以为用户和角色扩展”下的http://blogs.msdn.com/b/webdev/archive/2013/12/20/announcing-preview-of-microsoft-aspnet-identity-2-0-0-alpha1.aspx。 不同之处在于您为每个身份模型创建了单独的类。