为什么禁用延迟加载会导致相关表没有结果?

P.B*_*key 2 c# entity-framework-4

鉴于:

        public SomeEntity Read(int primaryKey)
        {
            SomeEntity myEntity;
            using (var context = new MyEntities2())
            {
                context.Configuration.LazyLoadingEnabled = false;//This line is wacky
                myEntity = context.SomeEntities.SingleOrDefault(ct => ct.PrimaryKey == primaryKey);                     
                if (myEntity == null)
                    return myEntity;

                //Force eager Load...
                var bypassDeferredExecution = myEntity.RelatedTable1.ToList();
                var bypassDeferredExecution2 = myEntity.RelatedTable2.ToList();
            }
            return myEntity;
        }
Run Code Online (Sandbox Code Playgroud)

如果我设置LazyLoadingEnabled = false然后myEntity.RelatedTable1.Count == 0.
保留默认值LazyLoadingEnabled = truemyEntity.RelatedTable1.Count == 2.

我的理解是,Lazy Loading和Eager Loading是极端的对立面.我迫不及待加载.无论我是否使用延迟加载,我希望我的相关表(交叉引用表)有2个结果.所以在我看来这些结果毫无意义.

为什么延迟加载会影响我的结果?

Mar*_*zek 5

您必须使用Include以急切加载相关实体:

myEntity = context.SomeEntities
                  .Include("RelatedTable1")
                  .Include("RelatedTable2")
                  .SingleOrDefault(ct => ct.PrimaryKey == primaryKey);
Run Code Online (Sandbox Code Playgroud)

Lazy Loading设置为false不会导致它自动发生.