假设我有这两个表:
分类
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或中间类。
答案 0 :(得分:2)
使用以下代码:
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();
答案 1 :(得分:0)
另一个解决方案是在数据库中创建一个View,并使用EntityFramework作为新实体进行映射