EF式をメソッドパラメータとして渡すにはどうすればよいですか?
私の質問を説明するために、擬似コードの例を作成しました。
最初の例は、今日の私の方法です。この例では、EFとファンシーリトライロジックを利用しています。私がする必要があるのは、Fancy Retry Logicをカプセル化して、より一般的になり、重複しないようにすることです。
2番目の例は、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;
}
}
2番目の例:
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))
}