【发布时间】:2018-08-06 02:25:05
【问题描述】:
我创建了一个扩展“IdentityUser”类的模型。
public class ApplicationUser : IdentityUser
{
public string FirstName_TXT { get; set; }
public string LastName_TXT { get; set; }
}
在定义 dbcontext 时,我确保包含 IdentityDbContext 以及 ApplicationUser 参考。
//initial DB Configuration
public class DbContext : IdentityDbContext<ApplicationUser>
{
//Users References Articles
//Articles Automaticalled gets create
public DbSet<ContactRequest> ContactRequests { get; set; }
public DbSet<Class> Classes { get; set; }
public DbContext()
{
}
public DbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=DBNAME;Trusted_Connection=True;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
当我尝试在控制台应用程序中创建带有附加字段的数据库时,我收到以下错误。
class Program
{
static void Main(string[] args)
{
using (var ctx = new DbContext())
{
ctx.Database.EnsureCreatedAsync();
ctx.SaveChanges();
}
}
}
System.InvalidOperationException: '无法在 'ApplicationUser' 上配置密钥,因为它是派生类型。必须在根类型“IdentityUser”上配置密钥。如果您不打算将“IdentityUser”包含在模型中,请确保它不包含在上下文的 DbSet 属性中、在对 ModelBuilder 的配置调用中引用或从包含的类型的导航属性中引用在模型中。'
不知道我错过了什么。任何建议将不胜感激。
【问题讨论】:
标签: asp.net-core-2.1 entity-framework-core-2.1