2011-08-04 2 views
3

내가 음속 3 액티브를 사용하고 있는데 나는 이것을 효과적으로 수행 할 : 나는 데이터를 가져 오기 위해 저장 프로 시저를 작성했지만 음속은 foo는 바에서 열을 유지하기 위해 객체를 만들었습니다아음속의 객체를 통해 조인 된 테이블의 데이터를 반환하려면 어떻게해야합니까?

select * from foo 
    left outer join bar on bar.Id = foo.barId 
where foo.someProperty = 2 

.

데이터를 하나의 객체로 반환하면 바인딩 할 수있는 가장 좋은 방법은 무엇입니까? 이상적으로는 목록에 있으길 원하지만 내 수업을 쓰지 않고서는 아음속에 의해 제공되는 방법이없는 것처럼 보입니다. 당신은 당신의 조인을 수행하는 데이터베이스보기를 만들 수 있습니다, 그리고 뷰에 대한 데이터 형식을 음속 생성 한

당신은 여기에 몇 가지 옵션이 있습니다

+0

"공동"은 내가 종종 실수하는 부분이기도합니다 .-) –

+1

감사합니다. 도울 수 있니? – Gareth

+0

미안하지만, 나는 아음속이 무엇인지 알 수 없다. 나는 당신의 헤드 라인에 매료되었습니다. –

답변

4

..., 다른 모든에서 선택과 같은 것 다음 선택 표. 또 다른 대안은 Linq에 작업을 수행하는 것입니다 물론

public List<dynamic> LoadData(int id) 
{ 
    var data = from f in db.Foo 
      from b in db.Bar.Where(x => x.Id == f.BarId).DefaultIfEmpty() 
      where f.SomeProperty == id 
      select new 
      { 
       SomeProperty = f.Something, 
       AnotherProperty = b.SomethingElse 
      }; 
    return data.Cast<dynamic>().ToList(); 
} 

:

또는, (예를 들어 당신이 그물 (4)를 사용하는 경우) 익명 또는 동적 형으로 가입 할 수있는 Linq에 식을 사용할 수 있습니다 위의 표현식을 사용하지만 반환 된 데이터를 보유 할 클래스를 정의하고 선택하십시오.

public class MyData 
{ 
    public string SomeProperty { get; set; } 
    public string AnotherProperty { get; set; } 
} 

public List<MyData> LoadData(int id) 
{ 
    var data = from f in db.Foo 
      from b in db.Bar.Where(x => x.Id == f.BarId).DefaultIfEmpty() 
      where f.SomeProperty == id 
      select new MyData() 
      { 
       SomeProperty = f.Something, 
       AnotherProperty = b.SomethingElse 
      }; 
    return data.ToList(); 
} 
관련 문제