首页 新闻 搜索 专区 学院

.NET Core 使用identity生成的aspnetusers表,我想改表的一项索引,改完后使用EFCore迁移数据库生成表

0
悬赏园豆:10 [已解决问题] 解决于 2019-12-26 23:31

如题,我在aspnetusers表添加新的一项,然后设为唯一非空,最后EFCore生成表,

protected override void OnModelCreating(ModelBuilder modelBuilder)
{}
使用这个方法,生成修改数据库语句会报错,那我怎么改?

力揽狂澜的主页 力揽狂澜 | 初学一级 | 园豆:51
提问于:2019-12-25 23:08
< >
分享
最佳答案
0
收获园豆:10
dudu | 高人七级 |园豆:38814 | 2019-12-26 10:06

没有找到解决问题的线索

力揽狂澜 | 园豆:51 (初学一级) | 2019-12-26 21:46

@力揽狂澜: 具体报什么错?

dudu | 园豆:38814 (高人七级) | 2019-12-26 21:51

@dudu:
public class NoteUser : IdentityUser
{
public string UserViewName { get; set; }
}

自己加了一项,想把它把UserViewName变为unique索引,再迁移

按照文档写法我在DbContext添加

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<NoteUser>()
.HasIndex(b => b.UserViewName)
.IsUnique();
}

输入Add-Migration

报错

The entity type 'IdentityUserLogin<string>' requires a primary key to be defined. If you intended to use a keyless entity type call 'HasNoKey()'.

如果是自己写的模型这个方法可能会成功,(没试过),
但是想改 使用IdentityUser生成的表,我根本找不到IdentityUserLogin在哪里,
提示没有主键,主键在表生成自带的,这个方法不能用?

力揽狂澜 | 园豆:51 (初学一级) | 2019-12-26 22:04

@力揽狂澜: 你少写了 base.OnModelCreating(modelBuilder) ,详见 stackoverflow

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<NoteUser>()
        .HasIndex(b => b.UserViewName)
        .IsUnique();
}
dudu | 园豆:38814 (高人七级) | 2019-12-26 22:34
其他回答(1)
0

不懂.NET Core ,
但是ef.code first的话不是add-migration和update-database吗
这个方法里我看一般都是设置sqlgeneration和迁移策略的

猝不及防 | 园豆:1994 (小虾三级) | 2019-12-26 08:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册