EF ComplexType字段顺序

时间:2015-03-04 04:21:09

标签: c# winforms entity-framework datagridview

我开始使用C#在EF中工作我正在做一个例子,我只需要执行SP,然后我需要检索到DataGridView。

我添加SP并创建一个复杂类型,我的SP看起来像这样

select ProductId, ProductName, S.SupplierID, S.CompanyName, 
       C.CategoryID, C.CategoryName, UnitPrice
from dbo.Products P
inner join Suppliers S on S.SupplierID = P.SupplierID
inner join Categories C on C.CategoryID = P.CategoryID

但是,当我将数据检索到DataGridView时,Complex类型以不同的顺序显示结果,实际上它显示为

ProductName, SupplierID, CategoryID (...)

所以我想知道是否有机会修改我的complexType并以与我的SP相同的顺序获得输出?

1 个答案:

答案 0 :(得分:0)

在Entity Framework中创建和映射类型:

class Product
{
    public Guid ProductId { get; set; }
    public string ProductName { get; set; }
    public double UnitPrice { get; set; }
    public Supplier Supplier { get; set; }
    public Category Category { get; set; }
}

class Supplier
{
    public Guid SupplierID { get; set; }
    public string SupplierName { get; set; }
}

class Category 
{
    public Guid CategoryID { get; set; }
    public string CategoryName { get; set; }
}

然后查询您的数据库:

var q = from p in db.Products
        select new
        {
            p.ProductId, p.ProductName, p.UnitPrice,
            p.Supplier.SupplierID, p.Supplier.CompanyName, 
            p.Category.CategoryID, p.Category.CategoryName, 
        };

然后将其绑定到控件上:

dataGridView.DataSource = q.ToArray();