EF Core 2.2支架DbContext并添加Indetity

时间:2018-12-06 18:53:32

标签: c# entity-framework .net-core

如果我先使用代码,并且使用从IdentiyDbContext继承的上下文类 然后使用context.Database.EnsureCreated() EF创建数据库和身份表(AspNetUsers等)。

但是,如果我从现有数据库中搭建数据库上下文,然后从IdentityDbContext继承生成的上下文类,那么在第一次访问数据库时,我总是会遇到例外情况:

  

“实体类型'IdentityUserLogin'需要定义主键。“

不会创建身份表。

如何将身份表添加到现有的和脚手架的数据库中?

谢谢

2 个答案:

答案 0 :(得分:0)

我不确定这是错误还是设计使然,但是通过脚手架生成的dbcontext似乎缺少一行代码。如果您在生成的dbcontext中检查OnModelCreating函数,则不会调用基本函数。您需要在函数中添加以下行。

base.OnModelCreating(modelBuilder);

我在最后添加了这一行,迁移似乎很好。主键似乎是使用fluent api设置的,这需要调用基本函数。

更新

创建了一个问题,并确认这是设计使然:https://github.com/aspnet/EntityFrameworkCore/issues/14111

答案 1 :(得分:0)

我发现的唯一方法是以codefirst方式(从从IdentityContext继承的上下文开始)生成新数据库。至此,我有了一个带有身份/成员表的数据库。然后,我生成了一个脚本来创建这些表,并将该脚本应用于现有的数据库。 答: