none
DBSET和ObjectQuery如何转换? RRS feed

  • 问题

  • 我用EF4.1,查询实体时候是这样

    this.context.Set<STEP>():

    这是个System.Data.Entity.DbSet对象,

    有没有办法转换成ObjectQuery<STEP>?

    因为我用的一个扩展方法是针对ObjectQuery的:

    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;
    }


    they say nothing last forever

    2012年2月29日 13:16

答案

  • 您好,如果想要得到ObjectQuery<T>对象,首先你需要将DBContext转换为ObjectContext,

    ObjectContext objContext = ((IObjectContextAdapter) context).ObjectContext;
    之后用如下方法创建ObjectQuery<STEP>对象,
     ObjectQuery<STEP> STEPQuery =
            new ObjectQuery<STEP>("STEP", objContext);
    

    希望这些对您有帮助

    Allen Li [MSFT]
    MSDN Community Support | Feedback to us

    2012年3月2日 3:29
    版主