首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架Include()强类型

实体框架Include()强类型
EN

Stack Overflow用户
提问于 2011-05-24 04:54:02
回答 2查看 21.2K关注 0票数 53

有没有一种方法可以使用System.Data.Entity.Include方法使其强类型?在下面的方法中,Escalation是一个ICollection<>。

代码语言:javascript
复制
public IEnumerable<EscalationType> GetAllTypes() {
  Database.Configuration.LazyLoadingEnabled = false;
  return Database.EscalationTypes
    .Include("Escalation")
    .Include("Escalation.Primary")
    .Include("Escalation.Backup")
    .Include("Escalation.Primary.ContactInformation")
    .Include("Escalation.Backup.ContactInformation").ToList();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-01 09:28:50

这在Entity Framework4.1中已经可用。

有关如何使用include特性的参考信息,请参阅此处,它还展示了如何包含多个级别:http://msdn.microsoft.com/en-us/library/gg671236(VS.103).aspx

强类型的Include()方法是一个扩展方法,因此您必须记住声明using System.Data.Entity;语句。

票数 100
EN

Stack Overflow用户

发布于 2011-05-24 04:57:26

功劳归于Joe Ferner

代码语言:javascript
复制
public static class ObjectQueryExtensionMethods {
  public static ObjectQuery<T> Include<T>(this ObjectQuery<T> query, Expression<Func<T, object>> exp) {
    Expression body = exp.Body;
    MemberExpression memberExpression = (MemberExpression)exp.Body;
    string path = GetIncludePath(memberExpression);
    return query.Include(path);
  }

  private static string GetIncludePath(MemberExpression memberExpression) {
    string path = "";
    if (memberExpression.Expression is MemberExpression) {
      path = GetIncludePath((MemberExpression)memberExpression.Expression) + ".";
    }
    PropertyInfo propertyInfo = (PropertyInfo)memberExpression.Member;
    return path + propertyInfo.Name;
  }
}
代码语言:javascript
复制
ctx.Users.Include(u => u.Order.Item)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6102909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档