使用Entity Framework 6加载相关实体

时间:2014-10-01 15:24:44

标签: entity-framework

这是我第二天使用EntityFramework,我还有另外一个问题:

我正在将某种配置保存到我的数据库中。这很好用: 这是我的班级:

public class Configuration : IConfiguration
{....
   public ICollection<EmailClassificationPattern> emailClassificationPatterns { get; set; }
   ...
}

我得到两个表 dbo.Configurations dbo.EmailClassificationPattern dbo.EmailClassificationPattern 有4个条目,每个条目通过名为 Configuration_ID 的字段正确引用 dbo.Configurations

我正在以这种方式加载配置:

var configuration = (Configuration)mycontext.Configurations.Where(x =>
  x.configurationName=="Default").FirstOrDefault();

然后我试图访问成员emailClassificationPatterns这是:

    var relevantSubjectList = configuration.emailClassificationPatterns.
          Select( x => x.subjectPatternForMailCollection);

但是我得到一个ReferenceNullException,因为 emailClassificationPatterns 是NULL。为什么enttity框架不会加载引用的成员?我没有可能包含引用的成员,因为IntelliSense没有提供.Inlcude()(像这样:)

var configuration = (Configuration)mycontext.Configurations.Where(x => 
       x.configurationName=="Default").Include("emailClassificationPattern")

来启用eagerLoading吗?如果是 - 如何?是否有其他方式来访问引用的成员,是否有某种最佳实践?

祝你好运

塞巴斯蒂安

1 个答案:

答案 0 :(得分:1)

Include语句出现在Where之前。这将加载“子”实体。像这样:

var configuration = Configuration)mycontext.Configurations.Include("emailClassificationPattern").Where(x => 
       x.configurationName=="Default")