0

我是相当新的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除了MatTypewhich isLeatherPlastic类似的东西,我必须从桌子上拿走MaterialType。这是FK迄今为止唯一的一个,所以我SELECT *..之前和现在的用户,当涉及到它时,我不知道如何构建我的代码/查询,所以我可以DataGridView用第二个表中的信息填充。在DataGridView我有MaterialTypeId隐藏的列。

4

1 回答 1

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();

此示例从 Table 中的 DB 中获取全部数据Material,并将其放入List<MaterialDTO> listForGrid. 也许您还想在,Where之前放置Select表中的部分数据,而不是整个表。

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

于 2013-02-19T15:43:14.910 回答