是否可以使用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, i.e. using DbContext
答案 0 :(得分: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;
}