2012-10-01 3 views
2

주문 및 고객 테이블이 2 개 있습니다. 주문은 IdCustomer 외래 키에 의해 고객과 관련됩니다.EF를 사용하여 DataGrid에서 여러 테이블의 데이터를보고 편집하는 방법은 무엇입니까?

문제점 : 두 테이블의 값을 DataGrid에 표시하고 Orders 테이블에 속한 데이터를 편집하려고합니다.

그리드에서 Orders 테이블을 표시하고 편집 할 수 있었지만 Customers 테이블의 데이터를 어떻게 포함합니까?

this.grdData.ItemsSource = context.Orders; 

private void btnSave_Click(object sender, RoutedEventArgs e) 
{ 
    context.SaveChanges(); 
} 

답변

1

일반적으로 테이블에 fk가있는 경우 엔티티에 관계가 있습니다. 가지고 있지 않다면 추가해야합니다.

var query = from o in dataContext.Orders 
      select new ViewModel { 
            CustomerName = o.Customer.Name,                
            OrderTotal = o.Total, 
            Date = o.Date 
           }; 

:

public class OrderViewModel { 
    public string CustomerName{ get; set; } 
    public decimal OrderTotal { get; set; } 
    public DateTime Date { get; set; } 
} 

은 그럼 당신은 모든 정보를 검색하는 쿼리를 실행해야합니다

가장 좋은 방법은 두 기관에서 보여주고 싶은 무엇에 대한 뷰 모델 클래스를 만드는 것입니다 그리드의 데이터 소스로 사용하십시오.

어떤 기회에 의해 당신이 모델의 관계가없는 경우에는 덜 정직하고 쿼리를 수행 할 수 있습니다, 내가 A에서 B로 데이터를 복사이 aproach와

var query = from o in dataContext.Orders 
      join c in dataContext.Customers on o.CustomerId equals c.Id 
      select new ViewModel { 
            CustomerName = c.Name,                
            OrderTotal = o.Total, 
            Date = o.Date 
            }; 
+0

을 B에서 편집 그런 다음 다시 A로 복사하십시오. 많은 추가 작업이 필요합니다. A에서 데이터를 편집 할 수 있습니까? –

+0

모델의 엔티티간에 관계가 있습니까? – ivowiblo

+0

네, 그 관계가 있습니다. –

관련 문제