因此,我正在尝试首先使用实体框架代码实现Table-per-Type,但是仍然会在AspNetUsers表(ApplicationUser类)中创建一个鉴别器列,尽管我已经告诉过它。
DbContext
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
Database.SetInitializer(new MigrateDatabaseToLatestVersion<SchoolContext, School.Migrations.Configuration>());
modelBuilder.Entity<Student>().ToTable("Students");
modelBuilder.Entity<Teacher>().ToTable("Teachers");
}
public virtual DbSet<Address> Addresses { get; set; }有问题的类的POCO,包括使用ASP的ApplicationUser:
public class ApplicationUser : IdentityUser
{
public virtual ICollection<Address> Addresses { get; set; }
}
public class Student: ApplicationUser
{
public virtual string Name { get; set; }
public virtual ICollection<Subject> Subjects{ get; set; }
}
public class Teacher: ApplicationUser
{
public virtual int Wage{ get; set; }
}生成的数据库模式似乎插入了一个“鉴别器”列,但当我通过网站注册一个新帐户时,该列对该行显示为“未定义”。
我尝试过的事情:添加到使用ToTable("AspNetUsers")创建的ApplicationUser的OnModelCreating,等等
任何帮助都是很棒的!
发布于 2015-09-02 12:01:37
我遇到了同样的问题。事实证明,您必须为层次结构中的所有类提供流畅的API表映射。因为您没有ApplicationUser和IdentityUser的映射,所以EF认为您打算使用每个具体策略的类型。如果您不想为IdentityUser定义一个表,也不想为ApplicationUser定义一个表映射,我建议让ApplicationUser封装IdentityUser。
一个简单的测试是添加一个从ApplicationUser到AspNetUsers的映射,并从IdentityUser中删除继承,看看这是否有帮助。
我希望这能有所帮助。
谢谢,亚伯·比拉。
https://stackoverflow.com/questions/29528641
复制相似问题