Returning a method value from inside a using statement that gets a DataContext seems to always work fine, like this:
public sta
Have a look at this
Understanding the 'using' statement in C#
The CLR converts your code into MSIL. And the using statement gets translated into a try and finally block. This is how the using statement is represented in IL. A using statement is translated into three parts: acquisition, usage, and disposal. The resource is first acquired, then the usage is enclosed in a try statement with a finally clause. The object then gets disposed in the finally clause.