ADO.NET EF-当我们有外键时填充DataGridView
本文关键字:填充 DataGridView 我们有 NET EF- ADO | 更新日期: 2023-09-27 18:00:12
我对ORMs
和ADO.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
,它是Leather
,Plastic
和类似的东西,我必须从MaterialType
表中获取。这是迄今为止唯一的FK
,我以前使用过SELECT *..
,现在我不知道如何构建我的代码/查询,所以我可以用第二个表中的信息填充DataGridView
。在DataGridView
中,我有隐藏的列MaterialTypeId
。
使用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
之前,只从表中获取部分数据,而不是整个表。
然后将此数据绑定到网格。。。