【问题标题】:ASP.NET MVC - Using Identity with existing, modified AspNetUsers tableASP.NET MVC - 将标识与现有的、已修改的 AspNetUsers 表一起使用
【发布时间】:2015-12-22 16:43:27
【问题描述】:

在我的公司,DBA 更新我们的 SQL Server 表以添加列等,并在将这些更改推送到 prod 时。在我的场景中,我们有一个现有的 AspNetUsers 表和其他与身份相关的表。这个现有的 AspNetUsers 表添加了其他列(FirstName、LastName、Joined date),并且 id 列已更改为 int。

我正在这个现有数据库之上编写一个新的 MVC Web Api (VS 2013),我从使用我非常喜欢的 Identity 的默认 Web Api 模板开始。我不能使用 Code-First,因为这些表已经存在并且已经有这些附加字段。我不会也不能让我的代码通过 Nuget 更新数据库,我也不负责创建数据库脚本。

我的问题是:如何让我的代码与现有的 AspNetUsers 表一起使用,该表具有注册用户时需要捕获的其他字段?我已将新属性添加到 ApplicationUser 内部的 IdentityModel.cs 中:身份用户。我还将这些字段添加到我的 AccountController 的 Register 方法和 AccountBindingModel 的 RegisterBindingModel 类中。我在注册用户时遇到的错误是“找不到 EntityType Phoenix.WebAPI.Models.ApplicationUser 的映射和元数​​据信息”,我不知道如何解决这个问题,因为我不允许触摸数据库并且不想使用 Code-First。

【问题讨论】:

  • 有 4 种 EF 工作流:代码优先、数据库优先、模型优先和现有数据库中的代码优先。您不使用代码优先,并且已经有一个现有的数据库,所以您肯定在使用database-first。但看起来你手动输入/编写所有课程?看起来就像您在使用代码优先时所做的那样。

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


【解决方案1】:

好吧,让我们看看:

在我的公司,DBA 更新我们的 SQL Server 表以添加列

据我对 IT 职位的了解,DBA 不应该这样做。数据库建模是分析师的工作。

我不能使用 Code-First,因为表已经存在并且已经有了 这些额外的字段

这是不对的。您可以在现有数据库中使用 Code-First,它也比 EDMX 更好地工作。 EDMX 已在 EF7 中停止使用。

但是,如果您真的不想使用 Code-First,请查看此库 https://github.com/kriasoft/AspNet.Identity,它可能会有所帮助。

【讨论】:

【解决方案2】:

您可以尝试使用 Fluent API 将您的实体映射到数据库表。 fluent api

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2010-09-09
    相关资源
    最近更新 更多