【问题标题】:Is it possible to use a EF navigation property as displaymember?是否可以使用 EF 导航属性作为显示成员?
【发布时间】:2015-08-22 14:12:31
【问题描述】:

我有一个实体Employee,它由EmployeeIDJob 组成。我有另一个实体Personel,它有IDNameEmployeeID 是来自Personel 实体的ID 外键。

在我的代码中,我可以这样做: string nameStr = Employee.Personel.Name 使用 Employee 实体的导航属性。

我正在尝试在列表框中显示员工。我不能做(或者我不知道该怎么做)是使用 nav 属性作为列表框的显示成员,所以我得到一个不错的名称字符串而不是个人 ID。

这个我试过了,还是不行:

myListbox.Datasource = Employee.ToList();
myListbox.DisplayMember = "Personel.Name";

我正在尝试做的事情可能吗?那就是使用控件的 DisplayMember 的导航属性(在本例中为列表框)?

干杯!

【问题讨论】:

  • 作为记录,这在 WPF 中使用 DisplayMemberPath="Personel.Name" 有效,但我猜你使用的是 winforms,这是一种过时的技术,有各种限制并且不能正确支持数据绑定,因此迫使您对所有事物进行各种可怕的黑客攻击(例如创建匿名类等等)。我建议你放弃 winforms 并使用适当的 UI 技术。

标签: c# entity-framework listbox


【解决方案1】:

您可以将Employee 类投影到匿名类型并将其传递给控件

var employees = EmployeeList.Select(e => new{e.Id, Name = e.Personel.Name});

myListbox.Datasource = employees;
myListbox.DisplayMember = "Name";

【讨论】:

  • 感谢 DDiVita。有没有办法我可以做到这一点,并且仍然实现双向数据绑定,所以我所做的更改将反映在Employee
  • @Yabbie,也许this 会帮忙
猜你喜欢
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多