1

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

我正在使用这段代码:

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

为什么 ?

4

1 回答 1

0

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

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

所以你必须重新设计你的插入场景。当您使自己成为自己的并发用户时,对数据库的并行化总是很棘手。如果您想要快速插入,请查看BulkInsert.

于 2012-12-04T00:25:56.793 回答