在创建模型时不能使用上下文

时间:2012-12-01 22:07:11

标签: c#-4.0 entity-framework-4 parallel-processing

错误是:创建模型时无法使用上下文。

我正在使用此代码:

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.
    }

为什么?

1 个答案:

答案 0 :(得分:0)

您似乎只使用一个上下文实例(包含在_userService2中)。但根据MSDNObjectContext(或DbContext)不是线程安全的。见备注:

  

ObjectContext类不是线程安全的。在多线程场景中无法确保ObjectContext中数据对象的完整性。

因此您必须重新设计插入方案。对数据库进行并行化总是很棘手,因为您自己创建了自己的并发用户。如果您想要快速插入,请查看BulkInsert