【发布时间】:2009-11-06 05:16:03
【问题描述】:
在使用全局 Linq to Sql DataContext 并进行不需要的插入后,我决定使用分离的方法。我通过一个方法类来做到这一点,该类充当从我的业务对象到我的 DAL 的抽象层。每个 CRUD 调用都有一个 DataContext,所以我可以这样调用。
using (DatabaseMethods<TEntity> db = new DatabaseMethods<TEntity>())
{
return db.GetAll();
}
在 DatabaseMethods 构造函数中,我创建了一个新的 DataContext。 在 DatabaseMethods.Dispose() 中,我处理上下文,并将其设置为 null。
DatabaseMethods 中的GetAll 使用dataContext 获取列表:
return this.dataContext.GetTable<TEntity>().ToList();
问题是当我绑定到实体时,我的组合框被填充(它们由类似的 getAll 调用填充),但未显示 selectedItem。 (例如:Gun 具有 GunType(由外键链接)),但同一页面上的网格(绑定到同一对象)显示该项目的文本。难道是WPF不知道如何比较两者,知道它们是一样的?我的单元测试测试我的 DatabaseMethods 显示加载正确发生。
我已经尝试为我的所有 DataContexts 关闭 DeferredLoadingEnabled 并使用 LoadWith 函数在加载时获取描述符,但当 UI 第一次抓取它时它仍然必须为空。似乎 UI 必须尝试获取该属性一次,然后才能第二次工作。调试时加载属性(通过 LoadWith 设置)。
这是一个非常具体的问题,我一直在寻找关于我的问题的线索。如果有人有一些建议,我将不胜感激。
编辑:答案是覆盖 Equals。输入问题帮助我弄清楚了。然后我刷新了这个页面,看到了 Michael Petito 的回答。
【问题讨论】:
标签: wpf linq-to-sql data-binding