【问题标题】:add new SQL Table to Identity 2.0 data context将新 SQL 表添加到 Identity 2.0 数据上下文
【发布时间】:2015-03-23 17:46:05
【问题描述】:

我一直在使用 Azure 中托管的 Identity 2.0 构建一个 ASP.NET MVC5 Web 应用程序(使用 this articlethis article 获取有关实施 Identity 2.0 的指导),并且遇到了一个我希望有人可以解决的问题帮忙。

我的问题最终源于需要添加额外的 SQL 表,并且不知道从数据上下文角度处理此问题的正确方法。 Identity 2.0 完全运行并托管在我的 Web 应用程序的 Azure SQL 中,下一个目标是创建一个新的自定义表来存储一些额外的数据。在我的模型中创建新类、添加脚手架和创建控制器都很容易,但我想不通的是数据上下文。

我最初所做的(这似乎工作了一段时间,直到尝试启用 Code-First 迁移并无意中删除了我的 Identity 2.0 表)是创建第二个从 DbContext 继承的数据上下文,因此(请忽略红色“WepApp”下的波浪线,将其更改为通用的东西以用于共享):

然后我在这个类的Controller中使用了这个新的数据上下文,如下所示:

虽然起初这有助于完成工作,但在尝试通过添加其他列来更新这个新表时,我无意中删除了我的 Identity 2.0 表,现在每当我尝试执行任何迁移操作时都会出现“多数据上下文”错误,阻止我重新创建它们。我的怀疑是,虽然我还不确定,但我应该将我的新表集成到与 Identity 2.0 表相同的数据上下文中,因为它们是同一数据库中的不同表。

任何人都可以提供任何建议以正确地将其他表添加到包含 Identity 2.0 系统的数据库中吗?特别是,从数据上下文的角度应该如何处理?我现在有点绝望,因为我完全失去了我的 Identity 2.0 后端表,并且正在努力重新创建它们。谢谢。

【问题讨论】:

  • 这应该很简单,只需将DbSet 添加到您的ApplicationDbContext,然后添加将创建新表的迁移。我猜为您的CustomerProfileContext 创建的迁移分析了数据库并确定您正在删除所有身份表。那么,您的问题是如何通过将表迁移到单个上下文来修复现有数据库,或者如何从头开始工作?

标签: c# asp.net sql-server entity-framework azure


【解决方案1】:

认为除了“DefaultConnection”之外,您还需要添加 DbContext(请注意,您需要在 webconfig 文件中添加另一个 connectionString):

public class CustProfileContext : DbContext
{
    public DbSet<CustProfile> CustProfiles { get; set; }
}

或者,将您的 DbSet 语句移动到 ApplicationDbContext,例如:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }



    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

    public System.Data.Entity.DbSet<WebApp.Models.CustProfile> CustProfiles { get; set; }


}

完成其中一项后,添加一个新的迁移并查看 configuration.cs 文件以确保 Entity Framework 正确添加了表。

【讨论】:

  • 感谢 scurrie 和 Brendan。虽然我的问题不止于此,但将我的 DbSet 语句移动到 ApplicationDbContext 肯定会有所帮助,并且正是我正在寻找的指导。
  • 没有汗水@ssmolen。对于未来的阅读,您可以查看 this 关于身份的文章或查看文档 here
  • 正是我需要的!
猜你喜欢
  • 2018-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
  • 2022-11-25
相关资源
最近更新 更多