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

本文关键字:填充 DataGridView 我们有 NET EF- ADO | 更新日期: 2023-09-27 18:00:12

我对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,其中我填充了来自Material的所有信息,除了MatType,它是LeatherPlastic和类似的东西,我必须从MaterialType表中获取。这是迄今为止唯一的FK,我以前使用过SELECT *..,现在我不知道如何构建我的代码/查询,所以我可以用第二个表中的信息填充DataGridView。在DataGridView中,我有隐藏的列MaterialTypeId

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

使用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中。也许你还想把Where放在Select之前,只从表中获取部分数据,而不是整个表。

然后将此数据绑定到网格。。。