我在插入数据时遇到警告。
Parallel.ForEach(user, data => Db.ExecuteQuery("insert into temptbl (userid,attflag,checktime,username)values('" +
data.UserId + "','" + data.Flag + "','" + data.AttendanceDate + "','" +
data.Name + "')"));
答案 0 :(得分:4)
数据库连接对象不是线程安全的,并不打算同时在多个线程中使用。
您不应该在单个连接上并行化代码,而是需要为每个不同的线程建立单独的连接,因此您无法使用Parallel.ForEach
。
您可以在MSDN上看到此文档:
OleDbConnection Class,线程安全部分(靠近底部):
此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。
这意味着此类型的静态成员是线程安全的,而实例成员则不是,这意味着作为对象的类型不是线程安全的。