2012-12-01 2 views
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. 
    } 

이유는 무엇입니까?

답변

0

하나의 컨텍스트 인스턴스 (_userService2에 랩 됨) 만 사용하는 것처럼 보입니다. 그러나 ObjectContext (또는 DbContext)은 MSDN에 따라 스레드로부터 안전하지 않습니다. 설명 참조 :

ObjectContext 클래스는 스레드로부터 안전하지 않습니다. 다중 스레드 시나리오에서는 ObjectContext의 데이터 개체 무결성을 보장 할 수 없습니다.

따라서 삽입 시나리오를 다시 설계해야합니다. 데이터베이스에 대한 병렬화는 사용자가 자신의 동시 사용자가 될 때마다 항상 까다로운 작업입니다. 빠른 삽입을 원할 경우 BulkInsert을 살펴보십시오.

관련 문제