EF代码的继承首先在运行时创建意外的转换

时间:2018-04-20 11:56:46

标签: c# entity-framework ef-code-first runtime code-first

我有这个:

public class Person
{
    [Key]
    public Guid ID { get; set; }
    public string Name { get; set; }
}


public class Student : Person
{       
    public int Number { get; set; }
    public Account AccountInformation { get; set; }
}

更新

public class Account
{
    [Key]
    public Guid ID { get; set; }
    [Required]
    public string Email { get; set;}
}

DbContext班:

public DbSet<Person> Persons { get; set; }
public DbSet<Student> Students { get; set; }
public DbSet<Account> Accounts { get; set; }

更新后 - 数据库有三个表:PersonStudent(使用相同的主键)和Account

我想获取Person,但在运行时我有Student对象。

using (var dbContext = new MyDbContext())
            {
                Person person = dbContext.Persons.FirstOrDefault(u => u.Name == 'myName');
                person.Name = "newName";
                dbContext.SaveChanges(); // Exception because student's `Email` is `Required`
            }
运行时

personStudent! 这会在节省时间时导致错误。因为学生的EmailRequired。 为什么会这样?我该怎么办?

0 个答案:

没有答案