@oevzbzse

Как вывести связанные данные в Entity Framework?

Что то я уже запутался в Entity Framework. Изучаю EF, сделал бд через Model-first, кусочек базы на скрине38bf834b8f48429180e3f406ce6fbc0f.PNG.
Как вывести в datagridveiw поля, например, название, цена, и имя категории?
Если использовать ProductGrid.DataSource = db.ProductSet.ToList(); то он выводит System.Data.Entity.DynamicProxies.Category.
  • Вопрос задан
  • 276 просмотров
Решения вопроса 1
DarkRaven
@DarkRaven
разработка программного обеспечения
Я бы сделал вот так:
1) Объявил бы класс вида
class ProductDto
{
    [System.ComponentModel.DisplayName("ID")]
    [System.ComponentModel.Browsable(false)]
    public int ProductId { get; set; }
    
    [System.ComponentModel.DisplayName("Наименование")]
    public string ProductName { get; set; }
    
    [System.ComponentModel.DisplayName("Цена")]
    public float ProductPrice { get; set; }
    
    [System.ComponentModel.DisplayName("Категория")]
    public string Category { get; set; }

    [System.ComponentModel.DisplayName("Категория (ID)")]
    [System.ComponentModel.Browsable(false)]
    public int CategoryId { get; set; }    
}


Получил бы записи:
var dtos = (db.ProductSet.Include(x=>x.Category)
.Select(x => new ProductDto { 
   ProductId = x.ProductId, 
   ProductName = x.ProductName,
   ProductPrice = x.ProductPrice,
   Category = x.Category.CategoryName,
   CategoryId = x.Category.CategoryId
})).ToArray();


Ну и его уже бы привязывал к DataSoure, через класс BindingSource
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы