У меня проблема с Linq и ObservableCollections в моем приложении WPF.
Контекст проблемы:
Я создал очень простую базу данных SQL с двумя таблицами: User и BankAccounts.
Таблица пользователей имеет отношение один ко многим с таблицей BankAccounts. Затем я создал классы данных Linq-to-SQL, которые отлично работали ==> обнаружена также связь между двумя таблицами.
Далее я создал функцию для восстановления всех пользователей, которая отлично работает:
DataClassesDataContext dc = new DataClassesDataContext
var query = from u in dc.Users
select u;
Теперь предположим, что я хочу добавить новый банковский счет каждому пользователю (не очень вероятно, но все же).
Я мог бы добавить следующий код
for each(User u in query)
{
u.BankAccounts.Add(New BankAccount());
}
Выше работает все отлично. Свойство BankAccounts автоматически является частью класса User из-за объединения в базе данных и Linq DataClasses.
Однако в моем приложении я сначала добавляю результаты запроса в ObservableCollection. Таким образом, я мог бы использовать все виды привязки данных и changeenotification. Это достигается с помощью следующего кода:
ObservableCollection<User> oUsers = new ObservableCollection<User>(query);
Проблема: Внутри ObservableCollection я не могу ничего сделать со свойством user BankAccounts, поскольку оно теперь имеет тип EntitySet <>. Поэтому я больше не могу делать следующее утверждение.
for each(User u in oUsers)
{
u.BankAccounts.Add(New BankAccount());
}
Каким-то образом, когда запросные результаты добавляются в наблюдаемую коллекцию, невозможно получить доступ к свойствам пользователя user.BankAccounts. Однако можно связать свойство BankAccounts с любым элементом управления, например со списком, и оно содержит правильные данные.
Кто-нибудь теперь знает, как я могу создать observableCollction (или подобную коллекцию), из которой я могу получить доступ к этим "связанным" свойствам? Я действительно с нетерпением жду решения.
Заранее спасибо!
С уважением,
Bas Zweeris
E: Bas.Zweeris@Capgemini.com