2

是否可以使用 EF 获得 pk 列的最大值?我的意思是类似于 find 方法,它根据 pk 值获取实体,我们已经有了这个:

public TEntity Find(params object[] keyValues);

我正在寻找类似的东西:

public object PkMax<TEntity>();//which returns max of pk column

更新:

我正在寻找基于实体 pk 的动态 linq 查询,由于这个 SO 答案,目前我知道如何获取 pk:How to get the Primary Key(s) in Entity Framework 4.1, ie using DbContext

4

1 回答 1

1

您需要手动构建表达式,以便 LINQ-to-Entities 可以为您将其转换为 SQL。既然你说你可以得到 PK 属性的字符串名称,你可以使用这样的扩展方法:

public int GetMaxPK<T>(this IQueryable<T> query, string pkPropertyName)
{
    // TODO: add argument checks
    var parameter = Expression.Parameter(typeof(T));
    var body = Expression.Property(parameter, pkPropertyName);
    var lambda = Expression.Lambda<Func<T,int>>(body, parameter);
    var result = query.Max (lambda);
    return result;
}
于 2013-08-19T11:11:54.707 回答