2014-12-31 1 views
1

글쎄, 나는 언제, 어떻게 데이터 컨텍스트를 처분할지 모른다. 내가 잘못 아니에요 경우 모두가 잘 가면, 데이터 컨텍스트가 배치되고,이 경우try/catch를 dataContext와 함께 사용할 위치는 어디입니까? (Dispose)

try 
{ 
    using(MyEntities myDbContext = new MyEntities()) 
    { 
     //My code that get entities from data base and work with them 
    } 
} 
catch 
{ 
    throw; 
} 

예를 들어,이 코드가 있습니다. 그러나 내 코드가 잘못되어 예외가 발생하면 데이터 컨텍스트가 삭제됩니까? 이러한 이유로

, 나는 다른 옵션을 생각하고 :

using(MyEntities myDbContext = new MyEntities()) 
{ 
    try 
    { 
     //My code 
    } 
    catch 
    { 
     myDbContext.Dispose; 
     throw; 
    } 
} 

을이 경우에, 나는 내가 그 배치되는 생각, 캐치에 dbcontext을 dipose. 그러나 이것이 좋은 해결책인지 또는 다른 옵션이 있는지 나는 모른다.

dbContext 및 무료 리소스 (주로 데이터베이스 연결)를 사용하여 예외를 처리하는 가장 좋은 방법은 무엇입니까?

감사합니다.

+1

각 리소스 (컨텍스트, 연결 등)를'사용 중 '으로 그냥 감싸 주면됩니다. '.Dispose'를 호출하지 마십시오. 'try' /'catch'를 추가하지 마십시오. –

+1

'사용하기 '를 사용한다면 걱정할 것이 없습니다. 그것은 처분 될 것입니다 100 % –

+1

이 도움이 될 수 있습니다 - http://stackoverflow.com/questions/8309877/if-an-exception-happens-within-a-using-statement-does-the-object-still- – aw04

답변

2

이 당신을 보장하기 위해 필요한 모든 것입니다 우아한에 해당되지 않고, Dispose()

using(MyEntities myDbContext = new MyEntities()) 
{ 
    //My code that get entities from data base and work with them 
} 

:

MyEntities myDbContext = new MyEntities(); 
try{ 
    ... (your code) 
} 
finally{ 
    myDbContext.Dispose(); 
} 

예외가 발생하는 경우, 잡은 또는 중요하지 않습니다 잡히지 않았습니다 ...

관련 문제