3-Tier 응용 프로그램을 작성 중입니다. 또한 데이터 액세스를 위해 SQL에 LINQ를 사용하고 있습니다.LINQ 조인 메서드의 올바른 반환 값은 무엇입니까?
public IEnumerable<Customer> getCustomers()
{
CustomerDAL customerDAL = new CustomerDAL();
return from c in customerDAL.getCustomers() select c;
}
:
public Table<Customer> getCustomers()
{
DataContext context = new DataContext();
Table<Customer> customerTable = context.GetTable<Customer>();
return customerTable;
}
그것은 결과가 IEnumerable<Customer>
로 프리젠 테이션 레이어에 전달되고있는 비즈니스 계층에 제공됩니다
데이터 영역은 고객의 테이블을 반환하는 기능을 가지고있다
Presentation-Layer에서 나는 단순히 DatagridView의 DataSource에 IEnumerable을 사용하고 있습니다.
"정보"와 customerDAL.getInfo()
테이블에 따라 다른 테이블이 있다면 어떨까요? 이제 Business-Layer의 메소드에서 조인 조회를 작성하려고합니다.
public IEnumerable<Customer> getCustomerInfo()
{
CustomerDAL customerDAL = new CustomerDAL();
return from c in customerDAL.getCustomers()
join i in customerDAL.getInfo() on c.id equals i.InfoID
select new { c.id, c.Name, i.DateTime, i.Project };
}
문제는 IEnumerable을 객체의 유형을 필요가있다 : 나는이 같은 상상. 내 반환 값은 더 이상 고객 테이블이 아니라 고객 및 정보 테이블의 조합입니다. 나는 그것을 올바르게 받았 느냐? 여기서 반환 값에 대한 올바른 선택은 무엇입니까? 리드에 의해 설명 된 바와 같이
public class CustomerInfo
{
string name { get; set; }
long id { get; set; }
string dateTime { get; set; }
string project { get; set; }
public CustomerInfo(long _id, string _name, string _date, string _project)
{
name = _name;
id = _id;
dateTime = _date;
project = _project;
}
}
가 그럼 난 똑같은 메소드를 호출하고 있습니다 :
조언 후에 나는 사용자 정의 클래스, CustomerInfo.cs
를 만들었습니다.
The query contains references to items defined on a different data context.
는 사실이 모든 엔티티 클래스가 동일하면 .dbml 파일에있는 사실이 아니다 :하지만이 데이터 소스를 설정 프리젠 테이션 레이어에서 나는 예외를 얻을. 무엇이 잘못 될 수 있습니까?
IEnumerables로 채워진 사용자 지정 클래스에서 LINQ 쿼리를 실행하고 반환 값을 데이터 소스로 사용할 수 있습니까? – Prot