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

コンテキスト インスタンスを 1 つだけ使用しているようです (にラップされています_userService2)。ただし、MSDNObjectContextによると、 (またはDbContext) はスレッドセーフではありません。備考を参照してください:

ObjectContext クラスはスレッド セーフではありません。マルチスレッドのシナリオでは、ObjectContext 内のデータ オブジェクトの整合性を保証できません。

したがって、挿入シナリオを再設計する必要があります。データベースに対する並列化は、独自の同時ユーザーを作成するため、常に注意が必要です。高速挿入が必要な場合は、 をご覧くださいBulkInsert

于 2012-12-04T00:25:56.793 に答える