2012-01-30 2 views
0

단일 사용자 데스크톱 응용 프로그램은 메모리 내 데이터가 최신이라는 점에서 고유합니다. 따라서 간헐적 인 데이터베이스 조작에 대한 새로운 컨텍스트를 작성한 후 오브젝트를 다시 첨부하는 것보다는 나중에 발생하는 다중 사용자 요구 사항을 제외하고 전체 애플리케이션 세션에 대해 하나의 컨텍스트를 사용하여 위험을 감당할 수 있습니까?단일 사용자 데스크톱 응용 프로그램에서 컨텍스트 싱글 톤이 괜찮습니까?

답변

0

컨텍스트는 '트랜잭션'기반 (즉, 커밋)입니다. 그러므로 나는 그것을 싱글 톤으로 만들지 않을 것이다.

나는이 글을 추천 : Singleton datacontext를가한다고 여기서

의 DataContext는 가볍고

당신은 아마 몇 가지를 저장를 만드는 비용이 밀리 세컨드의 10 초. 마이크로 최적화라는 단어가 떠오르므로 엔티티 프레임 워크를 사용해서는 안됩니다.

+0

나는 트랜잭션 동작을 구성 할 수 있다고 생각합니다. 당신이 진술 한 다른 사실들이 사실이지만, 그들은 제 질문에 대답하지 않습니다. 즉, 응용 프로그램마다 하나의 컨텍스트를 사용하여 개체를 다시 연결하는 복잡성을 피하고 싶습니다. 나는 이것이 가지고 있을지도 모르는 위험을 묻고있다. – HappyNomad

+0

포인트가 찍혔습니다. 이 경우 엔트티 프레임 워크에서 충분히 깊이 생각하지 못했습니다. – Aphelion

0

단일 DataContext가 AFAIK, 변경 로그가 너무 큰 성장하여, 메인 메모리를 소모 나 많은 변화 충돌의 경우 한 사용자를 잃어버린 유일한 위험. 트랜잭션 동작을 구성 할 수 있는지 확실하지 않습니다.

하지만 멀티 스레드 응용 프로그램의 공유 데이터와 마찬가지로 스레드 동기화를 관리해야하므로 데이터 작업 당 DataContext을 사용하는 것이 좋습니다. 앱에서 사용자를 편집하려면 Form을 열어 자신의 DataContext을 열고 저장하거나 닫을 때 커밋해야합니다.

+0

구성 가능한 경우 첫 번째 사항은 문제가되지 않는다고 생각합니다. 내가 찾아 낼 것이다. 예, 스레드 동기화 문제는 다중 스레드의 경우 발생할 수 있습니다. 나는 OK와 Cancel 버튼으로 간단한 폼 UI를 생각하지 않고있다. – HappyNomad

+0

실제로 '폼'자체가 아니라 미리 정의 된 워크 플로에 따라 사용자가 수행 할 작업 인 '액션'에 관한 것입니다. –

+0

예, 알겠습니다. 하지만 상황에 객체를 다시 첨부하는 작업이 상당히 복잡 해지는 앱을 생각하고 있습니다. – HappyNomad

관련 문제