【问题标题】:How to inherit from IdentityUser in entity framework designer如何在实体框架设计器中继承 IdentityUser
【发布时间】:2023-04-03 22:55:02
【问题描述】:

我有一个 asp.net mvc 项目,它使用 asp.net Identity 对用户进行身份验证。数据库在实体框架设计器中设计。

有一个名为“农民”的表,我想允许每个农民登录到应用程序。据我所知,为了实现这一点,农民必须从 IdentityUser 继承,但我如何在实体框架设计器中做到这一点?

【问题讨论】:

  • IdentityUser 是抽象的。您需要从 您的 用户继承(ApplicationUser 如果您保持默认项目模板不变)。
  • 我可以建议不要混合对象并将 IdentityUser 与您的 Farmer 分开并在表格之间建立 1-1 链接。用户更多的是应用概念,农民是领域对象。两者有联系,但不相同。
  • @ChrisPratt 我无法从 ApplicationUser 继承,因为 ApplicationUser 在我拥有 Farmer 实体的 edmx 中不存在。有没有办法在这个 edmx 中移动应用程序用户?

标签: asp.net-mvc asp.net-identity ado.net-entity-data-model entity-framework-designer


【解决方案1】:

你的 mvc 版本是多少??

在 mvc5 中这是一个很好的响应

http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates.aspx

这样你就可以把两张桌子混在一起了。

另一种方法是在两个表之间创建一个使用关系

User.Identity.Name or

User.Identity.GetHashCode

使用它来获取连接用户的值

【讨论】:

  • 最好在你的答案中引用一些链接的内容,以防将来链接变坏。
【解决方案2】:

经过大量研究,我发现使用实体框架设计器无法从 ApplicationUser 或 IdentityUser 继承。

我的解决方案是从现有数据库创建 Code First 模型,然后从 ApplicationUser 继承。

【讨论】:

    【解决方案3】:

    据我所知,您实际上无法做到这一点,我认为即使可以,您也不应该尝试这样做。

    通过从 IdentityUser 继承,您是说 Farmer 可以通过 SecurityStamp、Roles 或 PasswordHash(从 IdentityUser 继承)等属性来描述,从设计的角度来看,这没有多大意义。

    如果您正在寻找用户和农民之间的直接关联,您可以简单地在农民模型中添加一个必需的 UserId 属性。因此,每当您创建一个新的 UserIdentity 实例时,您也会创建一个新的 Farmer 实例,并将 UserId 设置为新创建的 UserIdentity 的 Id 属性。

    【讨论】:

      猜你喜欢
      • 2011-05-19
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      相关资源
      最近更新 更多