【发布时间】: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