【问题标题】:Implementing asp.net Identity into already existing database with entity framework使用实体框架将 asp.net Identity 实施到现有数据库中
【发布时间】:2015-04-02 07:52:44
【问题描述】:

我正在尝试更新旧网站。它已经有一个包含用户和角色表的现有数据库,其中包含现有数据。

我需要创建一个新的 web-api 和一个新的 web 项目,并将 ASP.NET Identity 集成到现有的数据库中。

我目前已设置解决方案来分解项目,如下所示:

  • 服务
  • WEB_API
  • WEB_UI

我的目标是在服务层实现身份,以便我的 WebAPI 和 MVC 站点可以使用相同的身份机制。

此刻我相当不知所措,我在过去一两天阅读了许多教程和文章,最终选择了重新实现IUserStoreIRoleStore。并且还可以映射OnModelCreatingMethod中的不同实体。

我似乎找不到针对我想做的教程。我的数据库与简单地重新映射列的名称不同,而且我不想重新实现整个身份存储,因为只有几个冲突的字段。我发现的大多数 tuts 都与使用 mysql 而不是 EF 有关。我还是想用实体框架。

我遇到的问题:

  • 数据库中的当前用户表使用Int pk,而不是GUID
  • 密码字段使用不同的散列算法。所以我需要覆盖身份检查和存储密码的方式。
  • 我的数据库中没有所有必需的身份用户字段,但是我可以添加新字段,只是无法更改现有字段。
  • 我正在使用 Database First,因为 DB 已经存在。

所以基本上我的问题是,为了克服上述问题,我需要朝什么方向发展。我可以改变数据库映射吗?或者我是否需要重新实现用户和角色存储?

我最初的计划是使用实体框架重新实现用户和角色存储,然后我可以利用数据库首先对类进行建模并将实际的数据库结构和字段映射到我的 ApplicationUser 字段。但这就是我认为我可能会陷入冷水的地方,如果没有必要,我通常不喜欢重新发明轮子。

【问题讨论】:

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


    【解决方案1】:

    -如果您还没有备份当前数据库,那么您应该做的第一件事就是备份!

    您可以先使用代码来更新现有数据库。

    我找到了这个演练,它似乎接近您所走的路线,我希望它能帮助您解决问题,从“迁移到 Visual Studio 2013”​​开始。 http://www.asp.net/identity/overview/migrations/migrating-an-existing-website-from-sql-membership-to-aspnet-identity

    这将创建一些新表,但不一定是一个新数据库。

    下载 Nuget 包: Microsoft.AspNet.Identity.EntityFramework, Microsoft.AspNet.Identity.Owin, Microsoft.Owin.Host.SystemWeb

    启用迁移并运行如下脚本:https://aspnet.codeplex.com/SourceControl/latest#Samples/Identity/SQLMembership-Identity-OWIN/Migrations.sql

    或者您可以尝试使用 Visual Studio 扩展中的反向 POCO 生成器。

    (我第一次尝试在这里写答案。试图澄清。)

    【讨论】:

    • 感谢您的回复,我一定会看一看,希望对我的问题有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 2016-09-07
    • 2010-10-14
    • 2018-12-13
    • 2020-05-14
    • 1970-01-01
    • 2016-08-31
    相关资源
    最近更新 更多