Returns either Web Request scoped DataContext or a Thread scoped request object if not running a Web request (ie. HttpContext.Current) is not available.