How to pass a Lambda Expression as method parameter with EF
- by Registered User
How do I pass an EF expression as a method argument?
To illustrate my question I have created a pseudo code example:
The first example is my method today. The example utilizes EF and a Fancy Retry Logic.
What I need to do is to encapsulate the Fancy Retry Logic so that it becomes more generic and does not duplicate.
In the second example is how I want it to be, with a helper method that accepts the EF expression as an argument.
This would be a trivial thing to do with SQL, but I want to do it with EF so that I can benefit from the strongly typed objects.
First Example:
public static User GetUser(String userEmail)
{
using (MyEntities dataModel = new MyEntities ())
{
var query = FancyRetryLogic(() =>
{
(dataModel.Users.FirstOrDefault<User>(x => x.UserEmail == userEmail)));
});
return query;
}
}
Second Example:
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))
}