Новое приложение WPF, использующее MVVM и Database First?

Я создаю свое первое приложение WPF, и цель его состоит в том, чтобы в основном быть приложением для ввода данных в базу данных для операций CRUD (например, создание нового клиента в новом окне, редактирование клиента, отображение списка клиентов и т. д. ). Была создана база данных, и поэтому я создал папку Models, содержащую файл .edmx, материал dbcontext и частичные классы, сгенерированные с помощью инструмента ADO Entity Data Model.

РЕДАКТИРОВАТЬ:

Теперь мой вопрос в том, как мне работать с MVVM, когда моя ViewModel и модели работают вместе. Все учебники, которые я видел, показывают, что они начинаются с нуля и не используют существующие классы. Например, во всех руководствах будет показано создание совершенно нового класса Customer, а не просто удаление частичного класса Customer, который был создан для меня.

Я не хочу начинать сначала, так как же мне следовать этим руководствам вместе с классами, которые были созданы для меня с помощью Entity Framework из моей базы данных?


person user2317150    schedule 24.06.2013    source источник


Ответы (2)


MVVM не указывает, с чего вы начинаете или как вы работаете с базами данных.

MVVM указывает, что вы должны избавиться от ужасных взломов кода программной части, которыми изобилуют некоторые бесполезные платформы пользовательского интерфейса динозавров, такие как winforms, и вместо этого использовать DataBinding.

Поэтому просто используйте существующую инфраструктуру и убедитесь, что вы не манипулируете элементами пользовательского интерфейса и не создаете их в процедурном коде.

person Federico Berasategui    schedule 24.06.2013
comment
Спасибо за ответ. Итак, я предполагаю, что в области MVVM папка моих моделей (содержащая автоматически сгенерированные POCO) будет моей M в MVVM? Вы также говорите, что в каждый файл Window.xaml.cs не следует вводить код? - person user2317150; 24.06.2013
comment
@ user2317150 нет бизнес-кода. Только код View-Specific. В большинстве случаев, если в этом нет крайней необходимости, вы не размещаете в коде ничего, кроме InitializeComponent() по умолчанию. - person Federico Berasategui; 24.06.2013
comment
Спасибо. Я не хотел выбирать один ответ, потому что вы оба предложили решение/ответ, так что спасибо и за предложение. - person user2317150; 25.06.2013

На мой взгляд, в подходе, ориентированном на базу данных, нет ничего плохого, даже это неплохо, потому что у вас будет общий вид на проект (сторона данных).

Я бы порекомендовал вам начать подход MVVM с использованием фреймворка Caliburn.Micro, это просто, мощно и действительно приятно.

Caliburn.Micro — начало работы — часть 1 — там вы найдете все 5 частей.

Caliburn.Micro — фреймворк

person Wojciech Kulik    schedule 24.06.2013
comment
Спасибо. Обязательно присмотрюсь к Calibrun.Micro. Я прошел мимо этого, но не был уверен, следует ли мне использовать фреймворк или просто попытаться создать его вручную. - person user2317150; 24.06.2013
comment
Фреймворки очень полезны при использовании MVVM :-). Так что вперед, в будущем вы можете попробовать другие фреймворки, такие как MVVM light, Prism и т. д. - person Wojciech Kulik; 24.06.2013
comment
Использую Caliburn.Micro прямо сейчас. Спасибо. Не хотел выбирать только один ответ как правильный, так как они оба отвечают на мой вопрос. - person user2317150; 25.06.2013
comment
так что голосуйте :D. Кстати. вы должны выбрать один, чтобы пометить вопрос как «принятый», чтобы сообщить другим пользователям, что этот вопрос решен. - person Wojciech Kulik; 25.06.2013
comment
Я не мог проголосовать, потому что у меня недостаточно репутации. Я выбрал другой, потому что я бы сказал, что не должен использовать фреймворк прямо сейчас. Однако еще раз спасибо за ваше предложение, и я постараюсь использовать его, когда это возможно. - person user2317150; 25.06.2013
comment
@ user2317150 Удачи! ;-) - person Wojciech Kulik; 25.06.2013