2013-09-02 1 views
0

저는 TransactionScope를 사용하고 있습니다. 그 안에는 다양한 엔티티가 컨텍스트에 추가됩니다. 오류가 발생하고 트랜잭션이 커밋되지 않으면이 엔티티는 컨텍스트에서 제거되지 않으므로 프로세스를 다시 실행하고 변경 사항을 저장하면 데이터베이스에 두 번 추가됩니다. DbContext가 TransactionScope 트랜잭션을 인식하지 못합니까? 그들을 사용하는 또 다른 방법이 있습니까?TransactionScope 롤백은 DbContext에서 엔티티를 추가 했습니까?

답변

2

DbContext는 한 트랜잭션의 수명 동안 수명이 짧도록 설계되었습니다. 트랜잭션이 실패하면 컨텍스트를 파기하고 새 컨텍스트로 다시 시작해야합니다.

컨텍스트에는 정리 기능이 없으므로 (컨텍스트 처분의 일부로는 제외) 각 사용시 컨텍스트를 만들고 파기 할 것으로 예상됩니다.

+0

내 경우 엔 사용자가 "주"엔터티의 탐색 속성 인 엔터티를 선택하는 많은 ComboBox가있는 WPF 창이 있습니다. 컨텍스트를 삭제하면 다시 저장하려고 할 때 엔티티를 여러 추적기에서 참조 할 수 없다는 메시지가 표시됩니다 (그와 비슷한 것). –

+0

@DiegoModoloRibeiro - 귀하의 문제는 좋지 않습니다. 엔티티와 프리젠 테이션 계층을 직접 인터페이싱하는 대신 뷰 모델을 사용해야합니다. –

+0

@Mystere Man을 참조하십시오.하지만 탐색 속성은 어떻게됩니까? 예를 들어 키를 저장하고 실제 개체를 얻기 위해 데이터베이스에 다시 쿼리해야합니까? –