我有这个:
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; }
更新后 - 数据库有三个表:Person
,Student
(使用相同的主键)和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`
}
运行时 person
为Student
!
这会在节省时间时导致错误。因为学生的Email
是Required
。
为什么会这样?我该怎么办?