我使用 EF
的方法RetryGetWithExpression<city, List<city>>(u => u.Take(10).ToList());
public static TValue RetryGetWithExpression<T, TValue>(
Func<ObjectSet<T>, TValue> func)
where T : class
{
var entitySet = entitiesContext.CreateObjectSet<T>();
return func(entitySet);
}
上述代码适用于EF生成的表实体。我想要做的是以适用于存储过程的方式更改代码。
这是执行SP 的代码:
Entities G = new Entities();
ObjectResult<retrieveMedia_Result> F = G.retrieveMedia(1);
当我尝试将RetryGetWithExpression转换为接受SP时,我遇到了一个问题,即retrieveMedia是实例方法而我无法将其作为u.retrieveMedia传递(1)
RetryGetWithExpression<Entities, ObjectResult<retrieveMedia_Result>>(
u => u.retrieveMedia(1));
public static TValue RetryGetWithExpression<T, TValue>(
Func<ObjectSet<T>, TValue> func)
where T : class
{
}
如何更改上述代码以便它与SP配合使用?
答案 0 :(得分:1)
尝试
RetryGetWithExpression<ObjectResult<retrieveMedia_Result>>(u => u.retrieveMedia(1));
public static TValue RetryGetWithExpression<TValue>(Func<Entities, TValue> func)
{
return func(entitiesContext);
}
答案 1 :(得分:1)
类似的东西,
public static TValue RetryGetWithExpression<TParam, TValue>(
Func<TParam, TValue> func,
TParam parameter)
{
return func(parameter);
}
您可以称之为,
Entities g = new Entities();
ObjectResult<retrieveMedia_Result> f =
RetryGetWithExpression<int?, ObjectResult<retrieveMedia_Result>>(
g.retrieveMedia,
1);
但是,它看起来毫无意义,因为您要做的就是传递一个函数委托并调用它。