错误是:创建模型时无法使用上下文。
我正在使用此代码:
Parallel.Invoke(AddDataParallel);
private void AddDataParallel()
{
Parallel.For(1001, 2001, delegate(int i)
{
User user = new User();
user.UserName = "user" + i;
_userService2.Add(user);
});
}
错误:
public T Add(T entity)
{
return _entities.Add(entity);//The context cannot be used while the model is being created.
}
为什么?
答案 0 :(得分:0)
您似乎只使用一个上下文实例(包含在_userService2
中)。但根据MSDN,ObjectContext
(或DbContext
)不是线程安全的。见备注:
ObjectContext类不是线程安全的。在多线程场景中无法确保ObjectContext中数据对象的完整性。
因此您必须重新设计插入方案。对数据库进行并行化总是很棘手,因为您自己创建了自己的并发用户。如果您想要快速插入,请查看BulkInsert
。