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到SQL线程安全吗?

linq to sql线程本身安全吗,绝对不是

是你使用linq sql在你的代码你张贴在你的问题线程安全的方式,

每个线程都有自己的MyDataContext副本,因为你正在使用它的线程内部的变量(这就是你应该做的)没有变量在线程之间共享,你可以运行尽可能多的你想要的,而不需要执行任何类型的锁定