Sabyasachi Mukherjee Ответов: 1

Шаблон репозитория в MVVM - WPF


Я использую Entity Framework 6 в WPF. Я уже создал репозиторий, который возвращает список сущностей в Viewmodel. Поскольку мне нужно привязать эти списки к DataGrid, я преобразовал их в ObservableCollection. Это нужно сделать так, чтобы трекер изменений EF6 мог обнаружить внесенные изменения, и когда я вызываю Save() на UnitOfWork, изменения сохраняются в базе данных. Как это можно сделать?

Что я уже пробовал:

Я заполняю свою observablecollection в ViewModel следующим образом:
ObservableCollection<items> TestCollection = new ObservableCollection<items>(UnitOfWork.Items.GetAll());


Теперь, если я добавлю какой-либо элемент в TestCollection, а затем вызову
UnitofWork.Complete()
здравый смысл подсказывает, что элемент не будет добавлен в базу данных. И конечно, это не так.

CHill60

Каков ваш реальный вопрос? Мы не можем предоставить учебные пособия на этом форуме

Sabyasachi Mukherjee

Мой актуальный вопрос: "как я должен держать объект IEnumerable и коллекции ObservableCollection в синхронизации?"

1 Ответов

Рейтинг:
7

Graeme_Grant

поиск Google: привязка WPF c# mvvm entity framework-поиск Google[^] имеет ряд ссылок, которые могут ответить на ваш вопрос относительно привязки DataGrid EF:

* Учебное пособие для базового проекта WPF-MVVM с использованием проекта Entity Framework-Code[^]

* Windows Entity Framework MVVM Walk Through 1 sample in C#, XAML for Visual Studio 2013[^]


Sabyasachi Mukherjee

Спасибо. Ссылка MSDN была тем, что я искал.

Graeme_Grant

Добро пожаловать. Я нахожу, что более чем в 90% случаев, когда я застрял, кто-то другой уже решил эту проблему. Поиск Google может быть вашим лучшим ресурсным инструментом...

Sabyasachi Mukherjee

На самом деле, ни один из них не был именно тем, что я ожидал. Я до сих пор не могу найти пример шаблона репозитория, используемого с WPF. Может быть, это из-за ловушек привязки. Во всяком случае, ссылки дали мне пример правильного использования MVVM без шаблона репозитория.

Graeme_Grant

Я только что еще раз взглянул на статью Microsoft link, и она довольно подробно описана с загружаемым кодом. В нем есть вся необходимая вам информация, вам нужно только адаптировать ее к вашей форме использования - в данном случае к вашему шаблону хранилища.

CHill60

Вы также можете найти эту статью CP полезной:Шаблон репозитория, сделано правильно[^]

Graeme_Grant

Можно?

CHill60

Это должно было быть ответом на комментарий ОП. Отсюда кажется, что все в порядке. Думаю, вы были уведомлены, потому что это комментарий к комментарию к вашему решению