数据绑定linq查询到Entity Framework 5.0中的datagridView

Mr1*_*9pm 6 c# entity-framework entity-framework-5

我正在学习实体框架(5.0和VSExpress 2012),我在将查询绑定到WinForms中的dataGridView时遇到了麻烦.我有下面的代码,当我启动应用程序时它显示我的查询,但我不知道在更改底层数据库中的数据后我需要做什么来更新dataGridView.这样做的最佳方法是什么?我在这做错了什么?

private void Form1_Load(object sender, EventArgs e)
    {
        using( var ctx = new TimeKeepEntities())
        {

            var qLoggedIn = from r in ctx.tblTimeRecords
                        where (r.tblEmployee.Active && !r.ClockOut.HasValue) || System.Data.Objects.EntityFunctions.DiffDays(r.ClockOut, DateTime.Now)<30
                        select new { Name = r.tblEmployee.Last + ", " + r.tblEmployee.First, r.tblProject.ProjName, r.ClockIn, r.ClockOut };

            dataGridView1.DataSource = qLoggedIn.ToList();

        }
    }
Run Code Online (Sandbox Code Playgroud)

小智 9

Pho请注意他们使用的是winforms而不是asp.net.根据MSDN,您可以执行以下操作:

BindingSource bindingSource1 = new BindingSource();
bindingSource1.DataSource = (from r in ctx.tblTimeRecords
                        where (r.tblEmployee.Active && !r.ClockOut.HasValue) || System.Data.Objects.EntityFunctions.DiffDays(r.ClockOut, DateTime.Now)<30
                        select new { Name = r.tblEmployee.Last + ", " + r.tblEmployee.First, r.tblProject.ProjName, r.ClockIn, r.ClockOut }).ToList();

dataGridView1.DataSource = bindingSource1;
Run Code Online (Sandbox Code Playgroud)

请参阅:msdn文档

  • 我这样做了 绑定是正确的,当我使用带有:context.SaveChanges()的保存按钮时,我能够从datagridview编辑数据.问题是我必须添加一行新数据或删除它.SaveChanges时,这些更改不会反映在数据库中.也许我正在伪造一些房产......?¿ (3认同)