c# - 我可以将 DbSet 和 BindingList 绑定(bind)在一起以在 ListBox 中显示数据库内容吗?

标签 c# winforms entity-framework listbox

我使用 WinForms 和 Entity Framework 6。我有一个:

  public class ApplicationDbContext : DbContext {
        public DbSet<Person> People{ get; set; }
  }

每个 Person 都有属性:IdNameLastNameAge .

Form 中,我想在 ListBox 中显示所有 People 并且我想保留此 的内容>ListBox 与数据库同步。

如何将 BindingList bindingList 绑定(bind)到 ApplicationDBContext 上下文,或者反过来?

点评:这是SSCCE。

最佳答案

您可以使用 ToBindingList() 获取 BindingList<Person> 的扩展方法你需要一个DataSource在你的ListBox :

public partial class YourForm : Form
{
    private YourContext context=new YourContext();

    public BindingList<Person> BindingList { get; set; }


    private void YourForm_Load(object sender, EventArgs e)
    {
        context.People.Load();
        this.listBox1.DataSource= BindingList= context.People.Local.ToBindingList();
        this.listBox1.DisplayMember = "Name";
    }

    //Button for save new changes
    private void SaveChangesButton_Click(object sender, EventArgs e)
    {
        context.SaveChanges();
    }

    //Disposing the context before close the form
    private void YourForm_FormClosing(object sender, FormClosingEventArgs e) 
    { 
        context.Dispose(); 
    } 
}

DbSet 中添加或删除对象时它也将被添加或从 BindingList 中删除.添加或删除 BindingList也会对DbSet执行相应的添加/删除操作.

关于c# - 我可以将 DbSet 和 BindingList 绑定(bind)在一起以在 ListBox 中显示数据库内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30831396/

相关文章:

c# - 清理这种模式的方法?使用私有(private) bool 标志来表示用户何时更改 UI 与类何时更改 UI?

C#自定义数据库引擎,如何实现SQL

c# - 如何使用相同的 ListView 移动 Group 的 ListViewItem 部分来代替另一个 ListViewItem?

c# - WPF 中的自动数据更新

c# - 为什么命名空间类型不应该依赖于嵌套的命名空间类型?

c# - DataRepeater 控件 WinForms 去除虚线

c# - 在 C# 中使用热键

C# EF SaveChanges 不保存最后一个值

entity-framework - System.InvalidOperationException:特定于关系的方法只能在上下文使用关系数据库提供程序时使用

c# - 带有 Entity Framework 的 MVC 中的列表框控件