저는 ASP.Net 환경에서 다년간 LINQ to SQL을 사용해 왔습니다. UI 및 BLL 계층은 웹 서비스로 구분되어 있으므로 지연로드, 변경 추적 등은 옵션이 아닙니다. 우리가 코드에서 어떤 일이 벌어지고 있는지 정확히 알았 기 때문에 어떤면에서 좋았습니다. BLL의 변경 사항을 지속적으로 유지할 책임이있었습니다 (엔티티가 새롭거나 업데이트 된 것인지를 알아 냈습니다). 일부 게으른 버그로 인해 예기치 않은 놀라움이 없었습니다. 적재가 어딘가에있다.Entity Framework 기능에 대한 질문
이제 작업을 이동하고 새 데스크톱 시스템 (WPF)에서 작업했습니다. 경계가 없습니다. 예 : UI 계층이 직접 BLL을 호출합니다 (단, 끝 부분에주의 사항 참조). EF5를 사용하려고 합니다만, EF가 제공하는 기능, 옵션 등의 수에 다소 압도되었습니다. 몇 가지 질문에 대한 답변을 얻을 수 있기를 희망합니다 ...
경계를 넘어서 게으른로드를 사용해야합니까? 고객과 모든 주문을 표시하고 싶다면 UI가 BLL의 고객 만 요청한 다음 지연로드를 사용하여 주문에 액세스하겠습니까? UI에서 이렇게하는 것은 나에게 맞는 것 같지 않습니다. 게으른 로딩이 BLL에서 사용할 것이라고 가정합니다.
DbContext.Configuration.LazyLoadingEnabled
을 사용하여 지연로드를 해제 할 수 있다고 생각하지만 내 BLL에서 지연로드를 사용하려면 어떻게해야합니까?하지만 UI에서 엔티티를 반환 할 때 UI를 수행하지 않으려 고합니다. 게으른로드?변경 추적, 자체 추적 엔티티 및 POCO는 어떻게됩니까? 내가 언제 사용해야합니까? LINQ to SQL (웹 서비스와 ASP.Net에 걸쳐 "상태"가 없으므로 변경 추적이 부적합 함)과 함께 작업했을 때 절 문제가되지 않았습니다. 나는 내가 그것을 익숙하게하는 모든 것을 비활성화시키고 싶어하지만, 나는 EF의 "선하심"을 놓치지 않을까 걱정된다. 데이터 지속성을 제어 할 수 없다는 것이 걱정 스럽습니다.
저는 EF를 사용하여 데이터를 검색하고 재생 했으므로 일부 속성 모음 (예 : customer.Orders)에 "프록시"엔티티가 있음을 일부 엔티티 계층 구조에서 확인했습니다. 이것들은 무엇이고 언제 유용합니까?
다시 프록시가
DbContext.Configuration.ProxyCreationEnabled
을 통해 해제 될 수 있음을 알았지 만 설명서에 그 이상이 있으며 LazyLoadingEnabled 설정과의 관계가 있음을 알 수 있습니까?EF "코드 우선"이 인기를 얻고있는 것으로 보입니다. 그것은 무엇을 당신에게 주는가? 나는 많은 데이터베이스를 작성하지 않고 SSMS에서 데이터베이스를 디자인하는 데 익숙하다.
마지막으로주의해야 할 점은 - 응용 프로그램의 UI 계층을 직접 BLL의 메소드를 호출하고 있지만, 미래에 우리가 (예를 들어, 웹 서비스를 통해)을 분리 할 수있는 작은 기회가있다. 이것이 설계 고려 사항 및 위에서 제기 한 몇 가지 질문에 어떤 영향을 미칩니 까?
여러 가지 질문을한데 묶는 것에 대해 사과드립니다. 내가 그들 모두에게 해답을 얻을 수 있다면, 미래의 상황에서 다른 사람들에게 유용 할 것입니다.
질문 당 하나의 질문을주십시오. –