感谢阅读。
我对`ListBox有一种非常奇怪的行为,显然是通过在我的实体中使用延迟加载的公式属性导致的(显然我错了)。
我正在使用Fluent NHibernate
作为我的映射,这是我的一个实体的一个特定映射:
class HeadquartersMap : ClassMap<Headquarters>
{
public HeadquartersMap()
{
Id(x => x.Id);
Map(x => x.Name)
.Not.Nullable()
.Unique()
.Length(50);
Map(x => x.CaseIdFormat)
.Not.Nullable()
.Length(50);
Map(x => x.NextCaseId)
.Not.Nullable();
Map(x => x.CaseCount)
.Formula("(select count(*) from \"Case\" AS caseTable where caseTable.headquarters_id = Id)")
/*.LazyLoad()*/
.Generated.Always();
Version(x => x.Version);
}
}
ListBox
绑定到NHibernate
从数据库生成的集合(来自Headquarters表中的行)。因为它是一个数据库请求并且可能需要很长时间,所以它在一个Task中完成(但我不认为它是一个线程问题,见下文)。没有延迟加载,ListBox
按预期工作,项目被选中,但是当我启用延迟加载(这是可取的)时,ListBox
开始工作不好:我可以选择一个项目第一次,但ListBox
不再更新选择(每当我选择一个项目时,选择不会更新,如果你使用键盘上的向上和向下箭头,应该选择的项目是'突出显示)。
ListBox
(当然使用相同的模板)可以正常使用手动创建的列表(没有NHibernate
)非常感谢您的任何建议