首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架TPT继承编辑基类表中的记录并将其绑定到子类表

实体框架TPT继承编辑基类表中的记录并将其绑定到子类表
EN

Stack Overflow用户
提问于 2014-02-01 20:14:45
回答 2查看 546关注 0票数 2

我首先使用代码通过TPT继承链接到现有数据库,在此代码中,我有一个名为Person的基类和两个名为Student和Teacher的子类,而Student和Teacher类都继承自Person类

代码语言:javascript
复制
public class Person
    {
        public int PersonId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }

    }
public class Student : Person
    {
        public int? Payment { get; set; }
    }


public class Teacher : Person
    {
        public int Wage { get; set; }
    }

这是我的上下文类

代码语言:javascript
复制
public class PersonContext : DbContext
    {
        public PersonContext()
            : base("TPT")
        {
            Database.SetInitializer<PersonContext>(null);
        }
        public DbSet<Person> Persons { get; set; }
        public DbSet<Student> Students { get; set; }
        public DbSet<Teacher> Teachers { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Person>().ToTable("Persons");
            modelBuilder.Entity<Teacher>().ToTable("Teachers");
            modelBuilder.Entity<Student>().ToTable("Students");
        }
    }

我使用FirstName和LastName插入了一条记录,并将其保存在Persons表中,方法是向上下文中添加一个简单的Person实例。那是因为我不知道那个时候的人是什么类型的。在另一个列表中,操作员识别记录,并尝试向其中添加额外的数据(例如,为学生添加付款)。我现在该怎么做?如果我获取那个人的记录,并将其转换为Student类,然后尝试更新它,我将得到以下错误:

付款‘

’不包含'Payment‘的定义,并且找不到接受类型为'TablePerTypeInheritance.Models.Person’的第一个参数的扩展方法'Payment‘(是否缺少using指令或程序集引用?)

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

https://stackoverflow.com/questions/21497890

复制
相关文章

相似问题

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