首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Entity Framework -使用TPT创建的鉴别器列

Entity Framework -使用TPT创建的鉴别器列
EN

Stack Overflow用户
提问于 2015-04-09 10:19:56
回答 1查看 1K关注 0票数 0

因此,我正在尝试首先使用实体框架代码实现Table-per-Type,但是仍然会在AspNetUsers表(ApplicationUser类)中创建一个鉴别器列,尽管我已经告诉过它。

DbContext

代码语言:javascript
复制
    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:

代码语言:javascript
复制
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,等等

任何帮助都是很棒的!

EN

回答 1

Stack Overflow用户

发布于 2015-09-02 12:01:37

我遇到了同样的问题。事实证明,您必须为层次结构中的所有类提供流畅的API表映射。因为您没有ApplicationUser和IdentityUser的映射,所以EF认为您打算使用每个具体策略的类型。如果您不想为IdentityUser定义一个表,也不想为ApplicationUser定义一个表映射,我建议让ApplicationUser封装IdentityUser。

一个简单的测试是添加一个从ApplicationUser到AspNetUsers的映射,并从IdentityUser中删除继承,看看这是否有帮助。

我希望这能有所帮助。

谢谢,亚伯·比拉。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29528641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档