WinForms & Entity Framework: отображение данных дочерних объектов в представлении сетки родительских данных WinForms - PullRequest
0 голосов
/ 25 ноября 2010

Допустим, у меня есть две таблицы:

Категория

Id int primary key,
Name nvarchar(50) not null,
Description ntext null,
AnotherColumn nvarchar(20) not null,
AndYetAnotherColumn nchar(10) null

Продукт

Id int primary key,
CategoryId int not null (references Category.Id),
Name nvarchar(20) not null
OtherStuff...

У меня есть объект Product, который имеет навигационный EntityReference типа Category, т. Е. Один продукт может принадлежать только одной категории, а одна категория может иметь много продуктов.

Допустим, я хочу отобразить продукты в сетке, но я также хочу отобразить Category.Name и Category.AndYetAnotherColumn вместе с информацией о продукте в сетке данных продуктов.

Если я просто привязываю элемент управления DataGridView к объекту Products, он отображает столбец с именем Category, который привязывается к навигационному свойству Category, а в ячейках каждой строки этого столбца отображается System.Type класса Category, который равен MyProjectNamespace.Category.

Как мне, без создания и связывания с другой ViewModel или Repository или каким-либо другим пользовательским классом, который возвращает мне нужные мне гибридные данные, отображать эти вещи в сетке данных? Это требование проекта, чтобы я не создавал ViewModel или средний класс.

Ответы [ 2 ]

2 голосов
/ 25 ноября 2010

Используйте код, подобный следующему:

Entities db = new Entities();
var q = from it in db.Products
        select new
        {
          it.Id,
          it.Name,
          it.OtherStuff,
          it.Category.Name,
          it.Category. AndYetAnotherColumn
        };
dataGridViewInstance.DataSource = q.ToList();
0 голосов
/ 03 декабря 2012

Другое решение - создать представление в вашей базе данных и использовать EntityFramework для отображения в качестве нового объекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...