2014-11-26 4 views
0
내가 도움이 필요

에 엔티티 Linq에에서 ("myTable에")를 포함, 난 내 주문 테이블에 액세스하는 방법이 : 그것은 매우 잘 작동실버 라이트

public IQueryable<Orders> GetOrders() 
{ 
    return this.ObjectContext.Orders.Include("UnitDetail"); 
} 

을, 나는 창문에서 볼 수 데이터 소스, 그리고

여기에서 주문 및 UnitDetail을 볼 수 있습니다하지만 내가 선택한 행에 대한 몇 가지 고려 사항을 확인해야합니다, 그래서 다음 방법으로 만든 :

public IQueryable<Orders> GetOpenOrders(string _iduni) 
{ 
    ObjectSet<Orders> orders = this.ObjectContext.Orders; 
    ObjectSet<Estatus> estatus = this.ObjectContext.Estatus; 
    ObjectSet<DetailUnit> units = this.ObjectContext.DetailsUnit; 
    ObjectSet<ServiceType> servicetype = this.ObjectContext.ServiceType; 

    var query = 
     (from o in orders 
     join e in estatus on o.ID equals e.IDOrder 
     join u in units on o.IDUni equals u.IDUni 
     join t in servicetype on u.IDType equals t.IDType 
     where o.IDUni.Equals(_iduni) 
     && !estatus.Any(oe => (oe.Estatus == "CANCELADA" || oe.Estatus == "CERRADA") 
     && oe.IDOrder == o.ID) 
     select o).Distinct(); 

     return query.AsQueryable(); 
} 

이 나에게 올바른 RECS을 보여을,하지만 앞으로 일어날 ? 왜 UnitDetail이 보이지 않는가, 결과를 검사 할 때 UnitDetail이 null 인 경우,이 새로운 메소드에 Include clausule을 넣을 수있는 방법은 무엇입니까 ??

미리 감사드립니다

+0

난 그냥 문제의이 같은 종류로 실행 한 오늘날'include'와'joins' 것이다 확실히 엉망. 그래서 코드를 다시보고, 조인의 목적은 무엇입니까, 당신은'select' 문장에서 그들과 아무 것도하지 않는 것처럼 보입니다. 나는 그것들이'where' 절에 참여하는 것을 볼 것으로 기대했지만, 당신의 제한들 중 어느 것도 그 조인을 필요로하지 않는다. 'estatus','units' 및'servicetype'에 대한 조인과 변수 할당의 목적은 무엇입니까? 내 편집 된 답변보기 – Mashton

답변

1

에 많은 당신은 어디서든 새로운 방법에 Include을 넣어하지 않았기 때문에.

EDITED : 사용되지 않는 조인을 제거합니다.

GetOrders 방법과 마찬가지로 Include을 사용하면 기존 orders 변수의 일부로 사용할 수 있습니다. 실제로 아무 데나 joins을 사용하고 있지 않습니까? 이처럼

:

public IQueryable<Orders> GetOpenOrders(string _iduni) 
{ 
    var query = 
     (from o in this.ObjectContext.Orders.Include("UnitDetail") 
     where o.IDUni.Equals(_iduni) 
      && !this.ObjectContext.Estatus.Any(oe => (oe.Estatus == "CANCELADA" || oe.Estatus == "CERRADA") 
     && oe.IDOrder == o.ID) 
     select o).Distinct(); 

     return query.AsQueryable(); 
} 
+0

대단히 감사합니다. Mashton, 저는 여러분의 제안을 시도합니다.하지만 넣을 때 : ObjectSet orders = this.ObjectContext.Orders.Include ("UnitDetail"); 시스템 say me "System.Data.Objects.ObjectQuery in System.Data.Objects.ObjectSet Cyndy

+0

Mashton : 그래서 내 쿼리를 변경합니다 : var query = (from this.ObjectContext.Orders.Include ("UnitDetail ") o.ID equals u.IDOrder ..... est)에 estatus에서 e에 가입한다 .Distinct(); return query.AsQueryable(); 그리고 그것은 오류가 없지만, App"UnitDetail "을 실행할 때 null ... :( – Cyndy

+0

예 Mashton, 간단한 메소드를 사용하면 모두 괜찮습니다. 'this.ObjectContext.Orders.Include ("DetailsUnit"). where (o => o.IDUni.Equals (_iduni));'동일한 레코드에 대해 매우 잘 작동합니다 ...? – Cyndy