Entity Framework 两个具有相同对象的表
Entity Framework two tables with identical objects
我有两个具有相同属性的表,例如:
DbSet<Person> Students;
DbSet<Person> Teachers;
但是 Entity Framework 不允许相同的 class 用于不同的表。
所以,我改用:
DbSet<Student> Students;
DbSet<Teacher> Teachers;
public class Student : Person { }
public class Teacher : Person { }
但是,如果我从第三方获取大量数据,如
List<Person> data;
我做不到
Students.Add(data) <== compile time error unable to convert
也不
foreach (var item in data)
Students.Add((Student)item); <== runtime error unable to cast
有什么好的处理方法的建议吗?
注意:这是一个简单的例子,它实际上用于大量的股票价格柱,性能是一个大问题,如果我能提供帮助,我不一定想要实例化一个对象的很多很多副本它。
我们需要有关如何为完全有效的答案创建 List<Person>
的更多详细信息,但如果您通过添加 Student
和 Teacher
对象来创建它,那么您应该能够在运行时转换实际上 是 Student
的那些:
List<Person> people = new List<Person>();
people.Add(new Student());
people.Add(new Teacher());
foreach(Student student in people.OfType<Student>())
{
Students.Add(student);
}
我也会制作 Person
abstract
所以你被迫使用其中一种具体类型。
我有两个具有相同属性的表,例如:
DbSet<Person> Students;
DbSet<Person> Teachers;
但是 Entity Framework 不允许相同的 class 用于不同的表。
所以,我改用:
DbSet<Student> Students;
DbSet<Teacher> Teachers;
public class Student : Person { }
public class Teacher : Person { }
但是,如果我从第三方获取大量数据,如
List<Person> data;
我做不到
Students.Add(data) <== compile time error unable to convert
也不
foreach (var item in data)
Students.Add((Student)item); <== runtime error unable to cast
有什么好的处理方法的建议吗?
注意:这是一个简单的例子,它实际上用于大量的股票价格柱,性能是一个大问题,如果我能提供帮助,我不一定想要实例化一个对象的很多很多副本它。
我们需要有关如何为完全有效的答案创建 List<Person>
的更多详细信息,但如果您通过添加 Student
和 Teacher
对象来创建它,那么您应该能够在运行时转换实际上 是 Student
的那些:
List<Person> people = new List<Person>();
people.Add(new Student());
people.Add(new Teacher());
foreach(Student student in people.OfType<Student>())
{
Students.Add(student);
}
我也会制作 Person
abstract
所以你被迫使用其中一种具体类型。