2015-01-13 3 views
0

저는 EF6 및 EFContextProvider과 함께 breeze를 사용하고 있습니다.Breeze를 사용하여 AfterSaveEntities에서 지연로드 사용

{ TransactionType = TransactionType.TransactionScope }; 

나는 AfterSaveEntities 위임하는 동안 쉽게 내 개체의 유효성을 확인하는 게으른 로딩을 사용하고 싶지만 그럴 수 없어 : 변경 사항을 저장에
나는 을 사용하고 있습니다.
설정하려고 시도하면 트랜잭션 중에 LazyLoadingEnabled = false이 작동하지 않습니다.
엔티티는 필요할 때 관계를로드하지 않습니다.

그렇게 할 방법이 있습니까?

답변

0

아니요, 개체를 수동으로로드해야합니다. 실제로 this SO answer에서 설명한 것처럼 추가 엔터티를로드하기위한 별도의 EF 컨텍스트를 만들어야합니다.

SaveResult를 클라이언트에 다시 보내면 탐색 속성을 통해 첨부 된 추가 엔터티는 원래 엔터티와 함께 ​​serialize됩니다. 이것이 의도하지 않는 한 원본 컨텍스트를 깨끗하게 유지해야합니다.

+0

이것은 작동합니다. 하지만 SaveChanges 설정에서 TransactionScope를 사용하고 있기 때문에 동일한 트랜잭션에서 데이터베이스에 대한 다른 연결을 사용하고 있다고 생각합니다. 이것은 내 프로젝트가 경량 트랜잭션 대신 DTC를 사용한다는 것을 의미합니까? 현재 DBcontext를 현재 트랜잭션에 참여 시키려면 어떤 방법이 있습니까? –

+0

"AfterSaveEntities 중 유효성 검사"란 무엇을 의미합니까? 저장 한 후 왜 유효성을 검사하겠습니까? 그리고 왜 트랜잭션 내부에서 유효성 검사를 신청합니까? 마지막으로, 기본 트랜잭션 설정을 변경하는 이유는 무엇입니까? 실제 저장 중에 만 발생하며 이전 및 이후 활동에서는 발생하지 않습니다. 데이터베이스 경계를 ​​최소화하고 성능을 최대화 할 수 있도록 트랜잭션의 경계를 가능한 한 작고 짧게하고 싶습니다. – Ward

+0

설명서의 [ContextProvider 도우미 메서드] (http://www.getbreezenow.com/documentation/contextprovider#ContextProviderMethods) 부분에서 설명한 것처럼 동일한 연결을 사용하여 두 번째 컨텍스트를 만들 수 있습니다. [이 SO 응답] (http://stackoverflow.com/questions/17901261/how-should-i-create-secondary-dbcontext-using-contextprovider-entityconnection/17917284#17917284)은 추가 지침을 제공합니다. –

관련 문제