나는 그렇게 같은 BAL 내 DAL에서 개체를 반환하는 n 층 asp.net 응용 프로그램이 최종 사용자에게 표시 할 계층입니다. 내 응용 프로그램의 다른 레이어에서 쿼리 실행을 막기 위해 게으른로드를하지 않습니다.닷넷 엔터티 ObjectContext는 스레드 오류
New transaction is not allowed because there are other threads running in the session
:
public void Delete(SourceKey sk)
{
try
{
_dataContext.DeleteObject(sk);
_dataContext.SaveChanges();
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message + " " + ex.StackTrace + " " + ex.InnerException);
}
}
내가 호출 "오기"기능을 호출 한 후 "삭제"보십시오, 나는이 오류가 :
나는 개체를 삭제하는 내 DAL에서 다른 함수를 생성 이것은 ASP.Net 응용 프로그램입니다. 내 DAL에는 엔터티 데이터 모델이 포함되어 있습니다. 위의 함수가있는 클래스는 동일한 _dataContext를 공유하며, 이는 내 생성자에서 인스턴스화됩니다. 내 추측은 독자가 여전히 "Get"기능에서 열리고 닫히지 않았다는 것입니다. 어떻게 닫을 수 있습니까? 결과와 시도를 통해 내 UI 층에서, 내가 루프과 같이 삭제하기 :
foreach(SourceKey sk in skm.Get(new SourceKey()))
{
Debug.WriteLine(sk.sourceKey1);
skm.Delete(sk);
}
편집 오류이 줄로 발생되는
:
_dataContext.DeleteObject(sk);
쿼리가 AsEnumerable()에서 실행 된 것이지요. 나는 foreach 루프에서 삭제를 가져 갔고 효과가있었습니다. –