【问题标题】:Save changes in BindingList with EF使用 EF 保存 BindingList 中的更改
【发布时间】:2015-03-10 21:01:51
【问题描述】:

有用于编辑数据的winform网格。填充数据(简化代码):

var regions = context.RegionViews;
var bindinglist = new BindingList<RegionView>(regions.ToList());
gridControl.DataSource = (IBindingList) bindinglist;

用相同的上下文保存数据:

context.SaveChanges();

但只保存编辑更改,而不是添加和删除的行。

【问题讨论】:

  • 您是否将新项目添加到您的context?将项目添加到您的 bindingList 与将它们添加到您的数据上下文不同。
  • 我觉得我的代码有问题。我必须添加识别新实体和已删除实体的逻辑,然后循环遍历我的列表?
  • 那个...或者使用实体框架提供的工具(Local 集合在你的DbSet
  • 了解本地性能问题

标签: c# entity-framework


【解决方案1】:

您正在从一个新列表(使用regions.ToList() 创建的列表)中创建一个BindingList&lt;RegionView&gt;,以便保存对记录的更改(因为列表中的引用也指向DbSet 包含的对象),但原来的 DbSet 不知道正在添加或删除项目(因为它们是从该列表中添加/删除的,而不是从 DbSet 中添加/删除的)

不要直接创建新的BindingList,而是尝试将DataSource 设置为DbSet 的本地可观察列表(我假设context.RegionViewsDbSet

gridControl.DataSource = context.RegionViews.Local.ToBindingList();

【讨论】:

    猜你喜欢
    • 2011-08-29
    • 2011-08-17
    • 2013-08-14
    • 2021-03-25
    • 1970-01-01
    • 2022-11-03
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多