如果我先使用代码,并且使用从IdentiyDbContext
继承的上下文类
然后使用context.Database.EnsureCreated()
EF创建数据库和身份表(AspNetUsers等)。
但是,如果我从现有数据库中搭建数据库上下文,然后从IdentityDbContext
继承生成的上下文类,那么在第一次访问数据库时,我总是会遇到例外情况:
“实体类型'IdentityUserLogin'需要定义主键。“
不会创建身份表。
如何将身份表添加到现有的和脚手架的数据库中?
谢谢
答案 0 :(得分:0)
我不确定这是错误还是设计使然,但是通过脚手架生成的dbcontext似乎缺少一行代码。如果您在生成的dbcontext中检查OnModelCreating
函数,则不会调用基本函数。您需要在函数中添加以下行。
base.OnModelCreating(modelBuilder);
我在最后添加了这一行,迁移似乎很好。主键似乎是使用fluent api设置的,这需要调用基本函数。
更新
创建了一个问题,并确认这是设计使然:https://github.com/aspnet/EntityFrameworkCore/issues/14111
答案 1 :(得分:0)
我发现的唯一方法是以codefirst方式(从从IdentityContext继承的上下文开始)生成新数据库。至此,我有了一个带有身份/成员表的数据库。然后,我生成了一个脚本来创建这些表,并将该脚本应用于现有的数据库。 答: