【问题标题】:How do I merge MVC5 Identity ApplicationDbContext into my own EF DataContext如何将 MVC5 Identity ApplicationDbContext 合并到我自己的 EF DataContext 中
【发布时间】:2021-04-18 22:52:16
【问题描述】:

我的项目结构由一个 ASP.Net MVC5 Web 应用程序和一些其他类库组成。我首先使用 Entity Framework 6 代码将其中一个类库用作持久性/数据库。

我想做的是将 MVC Identity ApplicationDbContext 合并到我自己的 DBContext 中。不仅如此,我还想使用自定义用户模型。

所以我的上下文看起来像这样 (在单独的类库中)

public class DataContext : IdentityDbContext<MyUserType>

MyUserType 看起来像这样

public class MyUserType : IdentityUser

我在整个商店都遇到了问题。我尝试重构 IdentityConfig、Startup_Auth 等。我在这里搜索并找到了一些文章,例如 this,但是这些似乎对我不起作用。我从来没有设法让上述架构工作。有谁知道一个很好的在线教程可以专门为 MVC5 / EF6 提供帮助?

提前致谢

【问题讨论】:

    标签: asp.net-mvc-5 entity-framework-6


    【解决方案1】:

    为了回答我自己的问题,我发现最简单的解决方案是将类 ApplicationUser 从您的 Web 项目中的 IdentityModel.cs 文件中移出,并将其移至您的数据库项目中。然后让你的数据库上下文继承它。

    这对我很有效。这意味着您必须添加一些 MS Identity 依赖项(Microsoft.AspNet.Identity, Microsoft.AspNet.Identity.EntityFramework) 到您的数据库项目,但这对我来说绝对没问题。

    它还使自定义实际用户变得轻而易举。只需编辑 ApplicationUser 类以添加您喜欢的任何属性。然后记住使用 nuget 控制台添加新的迁移和更新数据库。

    第 1 步。 将 ApplicationUser 类从您的 Web 项目中的 IdentityModel.cs 文件中移出,并将其移至您的数据库项目中。引入任何必需的依赖项,例如 Microsoft.AspNet.Identity 等以构建项目。

    第 2 步。 因此更改您自己的 DbContext 类的签名

    public class YourDataContext : IdentityDbContext&lt;ApplicationUser&gt;.

    第 3 步。 因此,将 create 方法添加到您的数据库上下文中;

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

    第 4 步。 在您的 Web 项目的 Startup_Auth.cs 中。换行

    app.CreatePerOwinContext(ApplicationDbContext.Create());

    app.CreatePerOwinContext&lt;YourDataContext&gt;(() =&gt; YourDataContext.Create());

    第 5 步。 将您喜欢的任何自定义属性添加到 ApplicationUser.cs

    第 6 步。 通过 nuget 包管理器控制台添加 EF Code first migration 以反映上述更改。

    第 7 步。 通过 nuget 包管理器控制台更新数据库。

    以上内容为您提供了一个包含 MS 身份类和基础架构的单一上下文。它还允许您根据需要自定义用户类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      相关资源
      最近更新 更多