我的 WPF 应用程序中的 Linq 和 ObservableCollections 有问题。
问题的背景:
我创建了一个非常简单的 SQL 数据库,其中包含两个表:User 和 BankAccounts。User 表与 BankAccounts 表具有一对多的关系。接下来我创建了 Linq-to-SQL 数据类,它运行良好 ==> 两个表之间的关联也被检测到。
接下来我创建了一个函数来检索所有正常工作的用户:
DataClassesDataContext dc = new DataClassesDataContext
var query = from u in dc.Users
select u;
现在假设我想为每个用户添加一个新的 BankAccount(不太可能但仍然如此)。我可以添加以下代码
for each(User u in query)
{
u.BankAccounts.Add(New BankAccount());
}
以上工作一切正常。由于数据库和 Linq DataClasses 中的关联,BankAccounts 属性自动成为 User 类的一部分。
但是,在我的应用程序中,我首先将查询结果添加到 ObservableCollection。因此,我可以使用各种数据绑定和更改通知。这是通过以下代码完成的;
ObservableCollection<User> oUsers = new ObservableCollection<User>(query);
问题:在 ObservableCollection 中,我不能对用户的 BankAccounts 属性做任何事情,因为它现在是 EntitySet<> 类型。所以我不能再做下面的陈述了。
for each(User u in oUsers)
{
u.BankAccounts.Add(New BankAccount());
}
不知何故,当查询结果被添加到 observablecollection 时,就不可能再访问 user.BankAccounts 属性了。但是,可以将 BankAccounts 属性绑定到任何控件,如列表框,并且它包含正确的数据。
有人现在如何创建一个 observableColction (或类似的集合),我可以访问这些“关联”属性吗?我真的很期待一个解决方案。
提前致谢!此致,
Bas Zweeris 邮箱:Bas.Zweeris@Capgemini.com