如何使用C#并行编程将数据插入字段
我正在使用实体框架和Linq技术,但当我尝试使用并行时,我遇到了一个例外 这是我的尝试如何使用C#并行编程将数据插入字段,c#,linq,entity-framework-6,C#,Linq,Entity Framework 6,我正在使用实体框架和Linq技术,但当我尝试使用并行时,我遇到了一个例外 这是我的尝试 class Program { static void Main(string[] args) { DbContextClass db = new DbContextClass(); Parallel.For(0, 10, i => { Category ct =
class Program
{
static void Main(string[] args)
{
DbContextClass db = new DbContextClass();
Parallel.For(0, 10, i =>
{
Category ct = new Category
{
NameCategory = "SomeText"
};
db.Categories.Add(ct);
});
db.SaveChanges();
Console.ReadKey();
}
}
核对
假设所有代码都不是线程安全的。所有主要的API,如DbContext、DbSet等,都不是线程安全的。有一些线程安全部分,通常是单例或类似的共享服务,但几乎所有这些都是内部的
这并不意味着您不能使用相同的DBContext
在paraller中工作。只需将代码更改为以下内容(每次创建一个新的DBContext):
“我有一个异常”-确切地说是哪一个?请添加更多信息和您的确切异常。这可能会帮助您此异常=>“System.InvalidOperationException”,并且当我使用循环而不并行时,不会发生此情况
class Program
{
static void Main(string[] args)
{
Parallel.For(0, 10, i =>
{
using(DbContextClass db = new DbContextClass()) {
Category ct = new Category
{
NameCategory = "SomeText"
};
db.Categories.Add(ct);
db.SaveChanges();
}
});
Console.ReadKey();
}
}