如果我首先使用代码和从IdentiyDbContext
继承的上下文类,然后使用context.Database.EnsureCreated()
EF创建db和标识表(AspNetUsers等)。
但是,如果我从现有的数据库中搭建数据库上下文,然后从IdentityDbContext
继承生成的上下文类,那么在第一次访问数据库时,我总是会有一个异常:
“实体类型'IdentityUserLogin‘需要定义主键。”
并且不会创建身份表。
如何将身份表添加到现有数据库和脚手架数据库?
谢谢
发布于 2018-12-07 12:07:17
我不确定这是一个bug还是故意的,但是scaffolding生成的dbcontext似乎缺少一行代码。如果在生成的dbcontext中检查OnModelCreating
函数,则不会调用基本函数。您需要在函数中添加以下行。
base.OnModelCreating(modelBuilder);
我在最后添加了这一行,迁移看起来很好。主键似乎是使用fluent api设置的,这需要调用基础函数。
更新
创建了一个问题,并确认这是设计造成的:https://github.com/aspnet/EntityFrameworkCore/issues/14111
发布于 2018-12-09 21:31:22
我发现的唯一方法是以codefirst方式生成一个新数据库(从从IdentityContext继承的上下文开始)。在这一点上,我有了一个包含身份/成员资格表的数据库。然后,我生成了一个脚本来创建这些表,并将该脚本应用于现有的数据库。一个。
https://stackoverflow.com/questions/53657924
复制相似问题