ASP.NET MVC - 将Identity与现有的已修改的AspNetUsers表

时间:2015-09-24 22:51:08

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

在我的公司,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:Identity User。我还将这些字段添加到了AccountController的Register方法和AccountBindingModel的RegisterBindingModel类中。我在注册用户时遇到的错误是“无法找到EntityType Phoenix.WebAPI.Models.ApplicationUser的映射和元数​​据信息”,我不知道如何解决这个问题,因为我不允许触摸数据库并且不想使用Code-First。

2 个答案:

答案 0 :(得分:0)

好吧,让我们看看:

  

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

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

  

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

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

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

答案 1 :(得分:0)

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