我有一个名为AspNetUsers
的表,这是AspNetCore.Identity
创建的默认表,我创建了一个名为User
的类,该类继承了IdentityUser
并在{{ 1}}:
AspNetUsers
然后,我创建了另一个名为public class User : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public string LockoutMessage { get; set; }
public string SessionId { get; set; }
public virtual UserDetails UserDetail { get; set; }
}
的类,在此表中不需要UserDetails
,因为在PK
中,我需要存储{{ 1}},即UserDetails
表:
User
现在,如果我取消注释AspNetUsers
属性,迁移将很好地进行,但是我不需要public class UserDetails
{
//public string Id { get; set; }
public string Biography { get; set; }
public string Country { get; set; }
public string FacebookLink { get; set; }
public string TwitterLink { get; set; }
public string SkypeLink { get; set; }
public string UserId { get; set; }
public virtual User User { get; set; }
}
,因此我注释了该属性并执行以下命令:
Id
在我告诉Id
的{{1}}类内部,以在add-migration Initial-Migration -context DemoAppContext
update-database
上实现DemoAppContext
:
EF
在FK
命令之后,出现此错误:
实体类型“ UserDetails”需要定义主键。
正如我说的,如果我注释掉UserDetails
一切正常,但是我不需要public class DemoAppContext : IdentityDbContext<User>
{
public DemoAppContext(DbContextOptions<DemoAppContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<User>(entity =>
{
entity.HasOne(d => d.UserDetail)
.WithOne(p => p.User)
.HasForeignKey<UserDetails>(x => x.UserId);
});
}
public DbSet<UserDetails> UserDetails { get; set; }
}
上的Add-Migration
。