2013-02-19 1 views
0

특히 ORMsADO.NET EF을 상당히 새로 도입했습니다. 나는 Code First 접근법을 사용하고 있습니다.ADO.NET EF - 외래 키가있을 때 DataGridView 채우기

Material :

public class Material 
    { 
     [Required] 
     [MaxLength(10)] 
     public string Code { get; set; } 


     [MaxLength(40)] 
     public string Color { get; set; } 

     [MaxLength(40)] 
     public string Description { get; set; } 

     [MaxLength(255)] 
     public string Picture { get; set; } 

     public long MaterialTypeId { get; set; } 
     public virtual MaterialType MaterialType { get; set; } 

    } 

MaterialType : 내 DB이 두 테이블이

public class MaterialType 
    { 
     [MaxLength(40)] 
     public string MatType { get; set; } 

     public virtual ICollection<Material> Materials { get; set; } 
    } 

을 그리고 나는이 MatType 제외 Material의 모든 정보로 채 웁니다 DataGridViewLeather, Plastic 및 그 물건은 내가 MaterialType 테이블에서 가져 가야합니다. 그것은 단지 FK까지 지금까지 사용자 SELECT *..을 가지고 있었고, 이제는 내 코드/쿼리를 구성하는 방법을 모르면 두 번째 테이블의 정보로 DataGridView을 채울 수 있습니다. DataGridView에는 열 MaterialTypeId이 숨겨져 있습니다.

답변

2

DataTransferObjects (DTO)를 사용하십시오.

public class MaterialDTO 
{ 
     public string Code { get; set; } 

     public string Color { get; set; } 

     public string Description { get; set; } 

     public string Picture { get; set; } 

     public string MatType { get; set; } 
} 

다음 정보와 함께 완료 :

List<MaterialDTO> listForGrid = context.Material.Select(e=>new MaterialDTO(){Code=e.Code, Color = e.Color, Description = e.Description, Picture = e.Picture, MatType = e.MaterialType.MatType}).ToList(); 

이 예는 표 Material에서 DB에서 모든 데이터를 가져오고 List<MaterialDTO> listForGrid에 넣습니다. 아마도 Select 앞에 Where을 넣고 전체 테이블이 아닌 테이블의 데이터 일부만 가져오고 싶을 것입니다.

이 데이터를 그리드에 바인딩하십시오.