组合框数据源和实体框架

本文关键字:实体 框架 数据源 组合 | 更新日期: 2023-09-27 18:08:06

我将数据模型实体添加到我的项目名为publishingCompanyEntities,并在我的winform中添加了ComboBox。但当我想绑定我的作者列表到我的组合框作为数据源已填满数据,但cmoAuthors.Items.Count返回0,但cmoAuthors.DataSource.Count返回2项

        publishContext = new publishingCompanyEntities();
        cmoAuthors.DataSource = publishContext.Authors;
        cmoAuthors.DisplayMember = "FirstName";

组合框数据源和实体框架

您需要将.ToList()添加到Authors EntitySet

publishContext = new publishingCompanyEntities();
        cmoAuthors.DataSource = publishContext.Authors.ToList();
        cmoAuthors.DisplayMember = "FirstName";
        cmoAuthors.Invalidate();
原因是EntitySet 不是一个实际的集合。这是一个查询(IQueryable),似乎ComboBox不够聪明,无法检测到这一点。

调用ToList()publishContext.Authors具体化为对象。

由于某种原因,ComboBox没有更新它的Items集合,然后检测到一个新的数据源。Invalidate()强制控件重新绘制自身,并在此过程中更新其Items集合。

您需要提供valuemember属性。ValueMember

cmoAuthors.DisplayMember = "FirstName";
cmoAuthors.ValueMember = "yourValueProperty";