自定义IdentityUserRole主键

2023-11-28

我正在使用 ASP.NET Identity Provider 和 EF 6 Code First,并且我创建了一个自定义IdentityUserRole有额外列的表OrganisationId。自定义表名为 UserRole。

该表当前的默认主键为UserId and RoleId.

我希望将 OrganizationId 列包含在 IdentityUserRole 表的主键中。

我可以在数据库中看到 UserRole 表,它是用于 userroles 的表(没有 aspnet_userrole 表,当我将角色分配给用户时,该表有数据)

我试过这个:

modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole").HasKey(x => new { x.UserId, x.RoleId }); 

但它没有向我显示 OrganizationId 属性。

所以我尝试:

modelBuilder.Entity<UserRole>().HasKey(x => new { x.OrganisationId, x.RoleId, x.UserId });

但是当我添加迁移时,Up 和 Down 方法都是空的。

更新(部分代码)

IdentityUserRole 类:

public class UserRole : IdentityUserRole, IOrganisationEntity
{
    [Key]
    public int OrganisationId { get; set; }

    [ForeignKey("OrganisationId")]
    public Organisation Organisation { get; set; }
}

DbContext 继承自IdentityDbContext<User>

And User继承自IdentityRebootUser

Update 2

这是新的 DbContext:

public class MyDbContext : IdentityDbContext<User, Role, string, 
                             IdentityUserLogin, UserRole, IdentityUserClaim>

这是我的新用户类:

public class User : IdentityRebootUser<string, IdentityUserLogin, 
                        Role, IdentityUserClaim>

和角色类:

public class Role : IdentityRole<string, UserRole>

但是,这给了我以下错误:

类型“MyNamespace.Model.Entities.User”不能用作类型 泛型类型或方法中的参数“TUser” 'Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext'。 没有隐式引用转换 'MyNamespace.Model.Entities.User' 到 'Microsoft.AspNet.Identity.EntityFramework.IdentityUser '

Update 3

我摆脱了 IdentityReboot。我创建了自己的 User 对象,它具有以下签名:

public class User : IdentityUser<string, IdentityUserLogin, 
                        UserRole, IdentityUserClaim>

我现在可以修改 UserRole 表以添加额外的 PK,这正是我想要的。

我现在遇到的问题是,我无法使用默认的 UserStore,因为当我告诉它使用我的自定义“用户”表时,我收到以下错误:

没有从“MyDB.Model.Entities.User”到“M​​icrosoft.AspNet.Identity.EntityFramework.IdentityUser”的隐式引用转换。

所以我实现了我自己的 IUserStore 版本,它会生成异步错误。

如果有一种方法可以将 UserStore 与我的自定义 User 对象一起使用,我会非常高兴。


您需要自定义所有身份对象以指定不同的密钥。网上有各种教程,但我发现的最好的来自ASP.net.

本质上,您需要为每个对象创建自己的版本,但继承更复杂的版本。例如,代替:

public class ApplicationUser : IdentityUser
{
    ...
}

你会这样做:

public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole, 
CustomUserClaim> 
{ 
    ...
}

并对所有对象重复此操作,包括 UserStore、UserManager、RoleManager 等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义IdentityUserRole主键 的相关文章

随机推荐

  • SOAP 和 REST Web 服务有什么区别? SOAP 可以是 RESTful 的吗?

    来自 MSDN 杂志https msdn microsoft com en us magazine dd315413 aspx and https msdn microsoft com en us magazine dd942839 asp
  • 组织功能文件的最佳方式是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我尚未解决的一个挑战是以某种方式组织我的功能文件和场景 这样可以轻松地在 Specflow 和 BDD 中导航和探索 想象一下一年后有人想要来了解这
  • GCP PubSub:通过 CURL 类型的请求发布消息

    有没有人有一个工作示例 说明如何直接从 shell 通过 CURL 类型的命令将消息发布到 GCP PubSub 主题 我试图不使用 CLI 也不使用客户端库 而且我对 OAUTH 的东西很感兴趣 我很高兴能有一个在 Linux 上运行的
  • 如何创建特定 TFS 2010 源代码管理路径的资源管理器快捷方式

    我们正在慢慢地将项目从旧的基于文件的存储 不要问 转移到 tfs 我们的编码员仍然习惯在文件系统中查找代码 由于我们正在讨论 100 个项目 每个项目都有一定的历史 因此我们必须小心地逐个移动它们 因此 我们将不得不在一段时间内将现有的文件
  • 是否可以从 Golang 中的父结构调用重写的方法?

    我想实现这样的代码 其中B继承自A并且只重写A的Foo 方法 并且我希望代码打印B Foo 但它仍然打印A Foo 看来接收者在Golang在C 中不能这样工作 当启用动态绑定时 代码可以像我想要的那样工作 我还发布了另一段代码 它可以工作
  • 如何在 Maven 中将多个 OpenAPI 3.0 规范文件合并为一个?

    在使用 Spring Boot 的 Maven 项目中 有多个 OpenAPI 3 0 规范文件 一个规范定义了所有 HTTP 错误 errors yml 并且 error yml 的组件在其他规范中引用 我想生成一个输出规范 其中包含 e
  • 如何使用服务器时间在 Firestore 中设置纪元

    我正在尝试设置在 Firestore 中创建数据时的纪元 我希望使用以下命令获得与实时数据库中所做的类似的结果ServerValue TIMESTAMP 我不想使用设备时间来设置它System getCurrentMillis因为该时间可以
  • 编译器抱怨“错误:程序中存在杂散'\240'”[重复]

    这个问题在这里已经有答案了 我需要实现以下功能 void calc double a double b int r int c double f double 参数a r c和f是输入 b是输出 a 和 b 是具有 r 行和 c 行的二维矩
  • 如何以 ArrayList 形式检索 JDBC 结果集?

    我正在执行一个查询来检索大量 ID 整数 有没有某种方法可以简单地以 ArrayList 形式检索所有内容 而不是在 ResultSet 中迭代数百万次并将所有内容一一复制到 ArrayList 中 我知道 ResultSet 应该被迭代
  • 如何集成 Python mido 和 asyncio?

    我有一个通过 MIDI 进行文件 I O 的设备 我有一个使用 Mido 来下载文件的脚本 但它是一堆全局变量 我想整理它以正确使用 asyncio 但我不确定如何集成 mido 回调 我认为文档说我应该使用 Future 对象 但我不确定
  • 渲染脚本和 GPU

    I knowRenderscript 的设计是为了掩盖我正在运行的处理器的事实 但是有没有办法编写代码 以便在具有 GPU 计算能力的设备 目前是 Nexus 10 上 它will在 GPU 上运行 有什么方法可以判断脚本的函数正在 GPU
  • 让 Visual Studio 忽略异常?

    我在 Silverlight 4 中使用异常来验证控件的输入 当我引发无效输入异常时 VS 2010 将显示弹出窗口并停止程序 我忽略这一点并恢复程序 一切都继续正常 因为异常用于表示验证错误 有没有一种方法可以将该异常标记为忽略 我正在关
  • 将表格布局转换为 CSS 布局的最佳方法是什么?

    我即将开始开发一个具有复杂的基于表格的布局的网页 几年前编码 我想做的一件事是将布局转换为带有 div 和 span 的正确 CSS 布局 您能建议一个解决此类问题的好方法吗 我应该使用像 Blueprint 这样的 CSS 框架吗 只要进
  • 将 mp4 转换为具有透明度的 webm?

    我知道怎么做使用 ffmpeg 将 mp4 转换为 webm ffmpeg y i me939371029 mp4 r 30 out3 webm 但我想用网络管理透明度 该指南使用 Blender 但 Blender 是一个桌面工具 不容易
  • clojure - 列出列表的所有排列

    假设我有一个这样的集合 word1 word2 word3 我怎样才能列出这些单词可能排序的所有方式 即 word1 word2 word3 word2 word3 word1 word3 word2 word1 etc 最简单的方法是使用
  • ListViewItem IsSelected 绑定 - 适用于 WPF,但不适用于 WinRT

    我正在尝试将 ListViewItem 的 IsSelected 属性绑定到 ViewModel 中的属性 它在 WPF 中工作正常 但在 Windows RT 中 IsSelected 属性永远不会被设置 public class Ite
  • 为什么 git credential-osxkeychain 没有任何文档?

    这真是令人沮丧 打字git credential osxkeychain告诉我 usage git credential osxkeychain
  • 将参数传递给 Git 别名命令

    我可以将参数传递给 Git 命令的别名吗 我在 Git 配置中有一些别名 如下所示 rb1 rebase i HEAD 1 rb2 rebase i HEAD 2 rb3 rebase i HEAD 3 rb4 rebase i HEAD
  • 在 get 请求中传递 JSON 数据作为请求正文

    您好 我必须向 url 发送 get 请求 请求正文包含 json 对象 如下所示 goupid some variable 下面是一段发送get请求的java代码 URL url1 new URL http onemoredemo app
  • 自定义IdentityUserRole主键

    我正在使用 ASP NET Identity Provider 和 EF 6 Code First 并且我创建了一个自定义IdentityUserRole有额外列的表OrganisationId 自定义表名为 UserRole 该表当前的默