LINQ到SQL线程安全吗?
本文关键字:安全 线程 SQL LINQ | 更新日期: 2023-09-27 18:04:38
我有一个接收和处理消息的服务器。然后调用一个方法,该方法使用LINQ To SQL将消息添加到数据库中。当消息传入时,它们被设置到单独的线程中进行处理,因此可能会有两个线程同时调用我的SQL方法。
我很好奇LINQ to SQL是否会为调用该方法的每个线程创建单独的数据上下文,或者如果上下文是静态的。我也想知道我是否应该在调用SubmitChanges()之前放一个线程锁。
我认为这个问题很简单,但我将添加一个代码片段,以防它有帮助。
using (MyDataContext db = new MyDataContext(args.ConnectionText))
{
// Remove records with matching iprocid and atype
IQueryable<densgrd> rows = from grades in db.densgrds
where grades.iprocid == args.DensGrd.iprocid &&
grades.atype == args.DensGrd.atype
select grades;
// Remove any results from the database.
foreach (densgrd remove in rows)
{
db.densgrds.DeleteOnSubmit(remove);
}
db.densgrds.InsertOnSubmit(args.DensGrd);
db.SubmitChanges();
}
linq to sql线程本身安全吗,绝对不是
是你使用linq sql在你的代码你张贴在你的问题线程安全的方式,是。
每个线程都有自己的MyDataContext
副本,因为你正在使用它的线程内部的变量(这就是你应该做的)没有变量在线程之间共享,你可以运行尽可能多的你想要的,而不需要执行任何类型的锁定