使用Entity Framework处理WPF应用程序。
我有一个实体MyClass1或多或少地链接到MyClass2:
public class MyClass1
{
...
List<MyClass2> mc2s {get; set;}
}
我的上下文有每个类的DBSet:
...
public DbSet<MyClass1> C1 { get; set; }
public DbSet<MyClass2> C2 { get; set; }
在我的DBInitialize.Seed()函数中: 在运行此行之后:
List<MyClass1> list1= new List<MyClass1>(context.C1);
我可以看到所有list1元素的mc2s属性都已正确填充(急切加载)。
然后我必须在程序的不同部分(到ViewModel)中运行完全相同的行:
List<MyClass1> list1= new List<MyClass1>(context.C1);
在这个安置中,如果轻松加载我的所有列表元素mc2s property = null。
差异来自哪里?
我尝试输入
context.Configuration.LazyLoadingEnabled = false;
之前,但它没有任何区别。
我认为这是因为Context invect在两次调用中都有所不同?
答案 0 :(得分:1)
我发现了。 在DBInitialize.Seed()中,上下文已经(完全)加载了MyClass1实例,因此可以使用mc2s属性。
如果在DBInitialize.Seed()中我稍后声明了第二个(新的)上下文,那么它也很容易加载。 现在一切都有道理:))