我正在开发一个使用Linq2SQL进行数据访问的应用程序,该应用程序即将开始使用(完全不相关的)async
。
在ASP.NET MVC控制器操作中的示例用法可能是这样的:
var db = DataContextManager.Context; // get a context instance which is cached on the
// request session.
var foo = db.Foos.Where(foo => foo.IsCool).First();
await unrelated.Stuff();
foo.IsCool = false;
db.SubmitChanges();
现在,我知道Linq2SQL通常不是线程安全的(wide已range questions关于此问题,但是我已经知道了努力了解这是否会产生这种使用模式的问题。
有几点需要注意:
DataContext
- 相关的事情,。换句话说,我们完全按顺序完成所有操作(除了少数例外,我们在不触及Linq2SQL的情况下执行一些并行操作,然后在继续之前重新加入),但我们(当然)允许例如ASP.NET要并行处理多个请求。如果这种用法存在问题,我们应该期待看到哪些问题?我们可以使用哪些良好的经验法则来避免它们,或者我们是否需要完全隔离所有异步内容并且仅将同步方法与Linq2SQL结合使用?并且,也许最重要的是,我们应该采取什么样的测试来重现我们可能期望看到的问题类型?