LINQ to ADO.net 데이터 서비스 쿼리에서 확장을 사용하는 대안은 무엇입니까?

entity-framework lazy-loading linq wcf-data-services

문제

LINQ to ADO.net Data Services 쿼리를 수행 할 때 Expand 키워드를 사용하는 대안이 있는지 궁금합니다. expand 메서드는 내가 관심있는 데이터를 얻지 만, 미리 작업 할 하위 개체를 모두 알고 있어야합니다. 내 하위 설정은 하위 개체가 액세스 할 때 저를 위해 게으르게로드되지만 하위 개체 속성을 가져 오는 게으른로드를 추가 할 수는 있지만 옵션이 아닌 것처럼 보입니다. 데이터 서비스 참조를 업데이트 할 때 데이터가 삭제됩니다.

누구든지이 상황에 대한 제안 / 모범 사례 / 대안이 있습니까? 감사.

===== MailingAddress를 가진 Member를 사용하는 예제 코드 =====

공장:

var me = (from m in ctx.Member.Expand("MailingAddress")
          where m.MemberID == 10000
          select m).First();
MessageBox.Show(me.MailingAddress.Street);

선호도 (MailingAddress가로드되고로드 된 경우 정말 좋을 것입니다)

var me = (from m in ctx.Member
          where m.MemberID == 10000
          select m).First();
MessageBox.Show(me.MailingAddress.Street);

또는 적어도 (참고 : MailingAddressReference와 함께 이것과 비슷한 것이 서비스 작업에서 LINQ를 수행 할 경우 서버 측에서 작동 함)

var me = (from m in ctx.Member
          where m.MemberID == 10000
          select m).First();
if (!(me.MailingAddress.IsLoaded())) me.MailingAddress.Load()
MessageBox.Show(me.MailingAddress.Street);

수락 된 답변

ADO.net 데이터 서비스를 통해 하위 개체로드 두 가지 선택이있는 것 같습니다.

열망하는로드

.Expand ( "[MemberVariableName]") LINQ to Data Services 예제에서 수행됩니다.

var me = (from m in ctx.Member.Expand("MailingAddress")          
         where m.MemberID == 10000          
         select m).First();
MessageBox.Show(me.MailingAddress.Street);

게으른로드 중

컨텍스트에서 .LoadProperty를 호출하고 지연로드되어야하는 변수와 속성을 전달하여 수행하십시오.

var me = (from m in ctx.Member          
          where m.MemberID == 10000          
          select m).First();
ctx.LoadProperty(myMember, "MailingAddresses");
MessageBox.Show(me.MailingAddress.Street);

인기 답변

LINQ to Entities를 사용하면 Include 메서드를 사용할 수도 있습니다. 선언 된 후에도 실행되기 전에 이것을 적용 할 수 있습니다. 예 :

me = me.Include("MailingAddress");


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.