问题
在一对多关系中,例如一个 Class 对多个 Student ,使用 ToList() 取出一个 List 的 Student 对象,
那么 List 中的 Student 对象外键对应的 Class 到底是各自独立,还是会共用一个对象?
那么分开取出的 Student 们对应的 Class 共用吗?
加上 AsNoTracking() 方法呢?
测试代码
model 定义
1 | public class Class |
DbContext 的继承和重写
1 | public class AppDbContext : DbContext |
主程序
1 | public static void Main(string[] args) |
运行结果
1 | AsNoTracking: |
结论
不加 AsNoTracking() 的情况下,所有的同一外键指向同一对象;
加 AsNoTracking() 的情况下,分开取出的同一外键指向不同的对象,通过 List 方式取出的同一外键指向相同对象。