实体框架DataGridView绑定源

时间:2015-07-12 23:43:45

标签: c# datagridview entity-framework-6

我发现了Entity Framework,我有一个winforms项目和一个在SQLserver上运行的数据库,它有2个表:StudentStandard。 首先,我使用向导帮助从数据库创建了一个ADO.NET实体数据模型。然后我有一个DataGridView控件,它有一个绑定源作为DataSource。 DataGridView使用Student表中的字段正确填充但是我想要做的是向同一个DataGridView添加一列,但是来自Standard表的数据。看一下图片:enter image description here

我被困在这里,我不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

你应该可以这样做:

public class DataBindingProjection
{
    public string StudentName { get; set; }
    public date DateOfBirth { get; set; }
    public string Height { get; set; }
    public string Weight { get; set; }
    ... etc.
    public string StandardName { get; set; 
}

在Load()或OnClick()中:

var query = context.Students
                   .Include(s => s.Standard)
                   .Select(s => new DataBindingProjection
                    {
                       StudentName = s.StudentName,
                       DateOfBirth = s.DateOfBirth,
                       Height = s.Height,
                       Weight = s.Weight,
                       ...
                       StandardName = s.Standard.StandardName
                    };

dataGridView1.DataSource = query.ToList();
dataGridView1.Columns[1].DataPropertyName = "StudentName";
dataGridView1.Columns[2].DataPropertyName = "DateOfBirth";
dataGridView1.Columns[3].DataPropertyName = "Height";
dataGridView1.Columns[4].DataPropertyName = "Weight";
dataGridView1.Columns[5].DataPropertyName = "StandardName";

或者您可以手动将这些添加到设计器中。