如何将EF表达式作为方法参数传递?如何将Lambda表达式作为方法参数传递给EF
为了说明我的问题我已经创建了一个伪代码示例:
第一个例子是我今天的方法。该示例使用EF和Fancy Retry Logic。 我需要做的是封装Fancy Retry Logic,使它变得更通用并且不重复。
在第二个示例中,我希望它是如何使用接受EF表达式作为参数的辅助方法。
这对于SQL来说是件小事,但我想用EF来做,所以我可以从强类型对象中受益。
第一个例子:
public static User GetUser(String userEmail)
{
using (MyEntities dataModel = new MyEntities())
{
var query = FancyRetryLogic(() =>
{
(dataModel.Users.FirstOrDefault<User>(x => x.UserEmail == userEmail)));
});
return query;
}
}
第二个例子:
T RetryHelper<T>(Expression<Func<T, TValue>> expression)
{
using (MyEntities dataModel = new (MyEntities())
{
var query = FancyRetryLogic(() =>
{
return dataModel.expression
});
}
}
public User GetUser(String userEmail)
{
return RetryHelper<User>(<User>.FirstOrDefault<User>(x => x.UserEmail == userEmail))
}
你可以格式化该位,苦苦追随 - 别人会读它/帮助更多 – NSGaga 2012-04-07 23:08:20
的SO编辑是这么辛苦的工作,但也许你有一个具体的问题,我可以回答? – 2012-04-07 23:13:16
是否尝试将查询转换为'.AsQueryable()'?这样你可以“移动”它,过滤等等。 - 我认为这就是你在这之后。编辑器的 – NSGaga 2012-04-07 23:14:10