【问题标题】:Change Identity Id from string to int将身份 ID 从字符串更改为 int
【发布时间】:2018-01-10 01:57:39
【问题描述】:

我尝试将 Id 从 string 更改为 int,但遇到了问题: 所有其他帖子都在_Startup文件中使用:

    services.AddIdentity<User, IdentityRole<int>>.()
        .AddEntityFrameworkStores<DatabaseContext,int>()
        .AddDefaultTokenProviders();   

但是当我尝试做同样的事情时,当我在 DatabaseContext 之后添加 int 时出现此错误:

“IdentityBuilder”不包含“AddEntityFrameworkStores”的定义,并且找不到接受“IdentityBuilder”类型的第一个参数的扩展方法“AddEntityFrameworkStores”(您是否缺少 using 指令或程序集引用?)(CS1061) (介绍)

​​>

我所做的其他更改:

       public class User : IdentityUser <int>  

       public class DatabaseContext :IdentityDbContext <User,IdentityRole<int>,int>                     

       protected override void OnModelCreating(ModelBuilder modelBuilder)

       {

        modelBuilder.Entity<User>(i => {
            i.ToTable("Users");
            i.HasKey(x => x.Id);
        });
        modelBuilder.Entity<IdentityRole>(i => {
            i.ToTable("Role");
            i.HasKey(x => x.Id);
        });
        modelBuilder.Entity<IdentityUserRole<int>>(i => {
            i.ToTable("UserRole");
            i.HasKey(x => new { x.RoleId, x.UserId });
        });
        modelBuilder.Entity<IdentityUserLogin<int>>(i => {
            i.ToTable("UserLogin");
            i.HasKey(x => new { x.ProviderKey, x.LoginProvider });
        });
        modelBuilder.Entity<IdentityRoleClaim<int>>(i => {
            i.ToTable("RoleClaims");
            i.HasKey(x => x.Id);
        });
        modelBuilder.Entity<IdentityUserClaim<int>>(i => {
            i.ToTable("UserClaims");
            i.HasKey(x => x.Id);
        });
            base.OnModelCreating(modelBuilder);

} 

【问题讨论】:

  • 请不要破坏您的帖子。通过在 Stack Exchange 网络上发布,您已授予 SE 分发该内容的不可撤销的权利(在 CC BY-SA 3.0 license 下)。根据 SE 政策,任何破坏行为都将被撤销。
  • 我试图删除我的帖子,但我没有找到任何删除按钮
  • @CalvT븃 不完全正确; 如果问题:有零个答案或只有一个答案,但该答案没有赞成票,用户可以删除他们自己的问题...只需单击问题下方的删除链接。 Help/Deleted Questions
  • 好的;谢谢你,对不起
  • @CalvT븃 不,只有一个,目前 0 票。大卫很可能没有注意到问题下微妙的“删除”链接。

标签: c# .net identity


【解决方案1】:

您可能正在使用 ASP.NET Core 2.x,它不再接受通用的 TKey 参数。

AddEntityFrameworkStores 方法不接受 TKey 参数作为 它是在 ASP.NET Core 1.x 中实现的。主键的数据类型由下式推断 分析 DbContext 对象。

相关链接:

Configure the ASP.NET Core Identity primary key data type

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多