使用具有整数ID的Entity Framework 6.1(预发布)IdentityUser

时间:2014-02-21 23:44:06

标签: c# asp.net-mvc entity-framework asp.net-identity

在新的Entity Framework 6.1 beta / pre-release中,他们包含了更改数据库中使用的Id列的数据类型的选项。我正在研究如何实现这一点并得出以下结论:

ApplicationUser.cs

public class ApplicationUser : IdentityUser<int, IdentityUserLogin<int>,
IdentityUserRole<int>, IdentityUserClaim<int>>, IObjectState
{
}

AuthenticationContext.cs

public class AuthenticationContext : IdentityDbContext<ApplicationUser, IdentityRole<int, IdentityUserRole<int>>, int, IdentityUserLogin<int>, IdentityUserRole<int>, IdentityUserClaim<int>>
{
    public AuthenticationContext()
        : base("ConnectionString")
    {
    }
}

AccountController.cs

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继承。

显然我做错了什么,但我不确定应该调整什么才能让它发挥作用。有什么建议吗?

1 个答案:

答案 0 :(得分:6)

我会尝试按照以下示例:“使用主键的类型可以为用户和角色扩展”下的http://blogs.msdn.com/b/webdev/archive/2013/12/20/announcing-preview-of-microsoft-aspnet-identity-2-0-0-alpha1.aspx。 不同之处在于您为每个身份模型创建了单独的类。