ADO.NET EF - 当我们有外键时填充DataGridView

时间:2013-02-19 15:21:06

标签: c# sql foreign-keys ado.net-entity-data-model

我对ORMsADO.NET EF特别陌生。我正在使用Code First方法。我在DB

中有这两个表格

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

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

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

我有一个DataGridView,其中填充MaterialMatType之外的所有信息,LeatherPlastic以及类似的内容我必须从MaterialType表中取出。它是迄今为止唯一的FK所以我之前和之后的用户SELECT *..我现在谈到它时我不知道如何构建我的代码/查询以便填充DataGridView使用第二个表中的信息。在DataGridView我有隐藏的专栏MaterialTypeId

1 个答案:

答案 0 :(得分: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; }
}

然后用info:

完成它
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。也许您还希望将Where放在Select之前,只从表中获取部分数据,而不是整个表。

然后将此数据绑定到Grid ...