【问题标题】:How to merge DbContext with IdentityDbContext如何将 DbContext 与 IdentityDbContext 合并
【发布时间】:2018-07-07 19:20:49
【问题描述】:

我正在尝试摆脱代码优先迁移。

问题在于 AspNetUsers 正在扩展 IdentityUser。结果,当我尝试使用 DbContext 时,出现以下错误。

  • EntityType 'IdentityUserLogin' 没有定义键。定义键 这个 EntityType。
  • EntityType 'IdentityUserRole' 没有定义键。定义此 EntityType 的键。

我想将 AspNetUsers 用于两个目的:

  1. 身份管理。
  2. 从数据库中查询用户。

不使用 IdentityDbContext 是否可以走这条路?

public class MyEntities : DbContext
{
     public DbSet<AspNetUsers> AspNetUsers { get; set; }
}

【问题讨论】:

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


【解决方案1】:

你不需要添加

public DbSet<AspNetUsers> AspNetUsers { get; set; }

从 IdentityDbContext 继承您的上下文以只有一个上下文

public class MyEntities : IdentityDbContext<AspNetUsers>

也不要忘记设置 UserManager 以将您的 MyEntities 上下文与 AspNetUsers 一起使用

【讨论】:

  • 成功了,谢谢先生。我已经使用 AspNetUsers 处理了 MyEntities 上下文。但是,这都是相关的,所以我将你的标记为答案。
【解决方案2】:

您可以避免使用 IdentityDbContext,但您需要自己在 DbContext 类的 OnModelCreating 方法中设置映射。

但是,如果您使用 SignInManager 等。我建议您使用 IdentityDbContext。您不受限制使用 Code-First 迁移。

【讨论】:

  • 我不需要向 OnModelCreating 添加任何内容。感谢您的回复。
【解决方案3】:

身份上下文继承自 DBContext。因此,只要您自己的数据库上下文继承自身份上下文,就足够了。类似于以下内容:-

public class MyDbContext : IdentityContext {}

【讨论】:

  • 这也是答案的一部分,但 Nikolay 提供了必要的额外上下文。感谢您回复这篇文章。
猜你喜欢
  • 1970-01-01
  • 2013-11-14
  • 2016-07-21
  • 2015-01-08
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多