C# 如何在不使用迁移的情况下自定义内置AspNet标识

C# 如何在不使用迁移的情况下自定义内置AspNet标识,c#,entity-framework-6,asp.net-identity-2,C#,Entity Framework 6,Asp.net Identity 2,我在Visual Studio 2015(社区版)中创建了新的web项目,并选择了个人身份。我遵循了使用EF迁移在自定义用户属性上同步代码和数据库的说明,效果很好 但是,如果我不想使用数据库迁移,如何添加自定义的用户属性?我在ApplicationUser和DB表字段中手动添加了C#属性,但始终得到“支持XXXXX上下文的模型自数据库创建以来已更改…”错误。我应该在OnModelCreating()覆盖中添加这些表映射吗 同样,对于那些对EF迁移感到满意的人来说,这在部署到不同环境时如何工作?您

我在Visual Studio 2015(社区版)中创建了新的web项目,并选择了个人身份。我遵循了使用EF迁移在自定义用户属性上同步代码和数据库的说明,效果很好

但是,如果我不想使用数据库迁移,如何添加自定义的用户属性?我在ApplicationUser和DB表字段中手动添加了C#属性,但始终得到“支持XXXXX上下文的模型自数据库创建以来已更改…”错误。我应该在OnModelCreating()覆盖中添加这些表映射吗


同样,对于那些对EF迁移感到满意的人来说,这在部署到不同环境时如何工作?

您所要做的就是从数据库中删除
\u MigrationHistory
表-它是在您注册第一个用户时由Identity system创建的


当您有专门的数据库团队或DB管理员时,不首先使用代码是有意义的,在这种情况下,应用程序开发人员不做数据库工作。

好的,如果您要更改模型,您需要一种方法将其引入其他环境。在早期开发过程中,您只需使用像DropCreateDatabase这样的初始值设定项就可以将您的更改输入到数据库中。一旦有了您关心的数据,您就需要迁移。您可以生成一个SQL脚本,该脚本将在其他环境中更新架构。我刚刚发现(感谢其他SO帖子),删除/重命名_umigrationhistory表并调用数据库。SetInitializer(null)将禁用此迁移功能。迁移适用于小型/POC项目,但对于真正的应用程序,单独的数据库项目在跟踪更改和部署管理方面要好得多。好吧,我们已经在4种不同的环境(开发、质量保证、培训、产品)中为大规模“真实”应用程序使用迁移超过2年了。一旦您理解了这些问题,它就可以正常工作。问题是数据库模式没有变化跟踪—表、索引、为什么和谁。您唯一拥有的就是_MigrationHistory表。对于复杂的LOB应用程序,这是不可取的。我们从迁移和源代码管理中得到了我们所需要的,但我们同意这并不适用于所有情况。