 <p>Maybe something like this?</p> <pre><code>public TValue RetryHelper&lt;T, TValue&gt;(Func&lt;ObjectSet&lt;T&gt;, TValue&gt; func) where T : class { using (MyEntities dataModel = new MyEntities()) { var entitySet = dataModel.CreateObjectSet&lt;T&gt;(); return FancyRetryLogic(() =&gt; { return func(entitySet); }); } } public User GetUser(String userEmail) { return RetryHelper&lt;User, User&gt;(u =&gt; u.FirstOrDefault(x =&gt; x.UserEmail == userEmail)); } </code></pre>