DataGridView是可编辑的,但不会使用实体框架

时间:2016-08-13 08:21:19

标签: c# .net winforms entity-framework datagridview

我已将DataGridView绑定到我的ComboBox,因此无论在ComboBox中选择了什么值,SID和Mark的相应值都会显示在{{1}中}}。执行此操作时DataGridView是可编辑的,但输入时数据不会保存在数据库中。有没有办法更新它?如果有另一种方法,我必须先警告我DataGridView中只需要SID和Mark,如果我试图绑定整个" Student_Course"表格DataGridView我得到了其他我不需要的列。

DataGridView

1 个答案:

答案 0 :(得分:5)

上述代码中存在一些重要问题:

  1. 您将查询结果整形为自定义Class1,而不是您的实体类型。

  2. 您在DbContext语句中使用了using,这意味着db在使用声明之后处理,并且不会跟踪更改。

  3. 您在SaveChanges的另一个未知更改的实例上调用了DbContext,因此没有任何反应。

  4. 要解决上述问题,请考虑以下提示:

    1. db创建为Form的字段,并在Load Form事件中对其进行实例化,并将其用于加载和保存数据。
    2. 您可以这样加载数据实体:

      db = new Entities2();
      db.Student_Course.Where(x => c.CID== CID).ToList();
      editDataGridView.DataSource = db.Student_Course.Local; 
      
    3. 您可以这样保存数据:

      editDataGridView.EndEdit();
      db.SaveChanges();
      
    4. 如果您需要使用与您的实体不同的视图模型进行编辑,则在保存更改时,您应首先使用上下文的另一个实例从数据库加载原始实体,然后为每个实体设置已更改字段的值和然后调用SaveChanges方法。

    5. 有关更多信息,请查看以下资源: