微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 MVC5 Identity ApplicationDbContext 合并到我自己的 EF DataContext 中

如何解决如何将 MVC5 Identity ApplicationDbContext 合并到我自己的 EF DataContext 中

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

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

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

public class DataContext : IdentityDbContext<MyUserType>

MyUserType 看起来像这样

public class MyUserType : IdentityUser

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

提前致谢

解决方法

为了回答我自己的问题,我发现最简单的解决方案是将 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<ApplicationUser>.

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

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

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

app.CreatePerOwinContext(ApplicationDbContext.Create());

app.CreatePerOwinContext<YourDataContext>(() => YourDataContext.Create());

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

第 6 步。 添加 EF 代码优先迁移以通过 nuget 包管理器控制台反映上述更改。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。