我对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
。
答案 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 ...