Нужно ли сначала писать классы или создавать модель Entity через DB? - PullRequest
0 голосов
/ 22 июля 2011

Я пишу свое первое приложение WPF. Я также установил Entity Framework (EF) 4.1. Я новичок в обоих. Я также учусь писать классы MVVM, ссылаясь на пример кода.

Я хочу знать, должен ли я сначала проектировать классы для Model, View и ViewModel или сначала проектировать схему базы данных и использовать EF для автоматической генерации классов. Какой подход рекомендуется?

Я создал три папки в своем решении Visual Studio, а именно: Model, View и ViewModel. Я буду добавлять соответствующие классы в эти папки. Есть предложения по этому поводу?

1 Ответ

1 голос
/ 22 июля 2011

Основная функция в Entity Framework 4.1 - это Code-First стиль разработки, и я бы рекомендовал использовать эту функцию, когда вы начинаете с новым приложением и у вас нет существующей схемы базы данных, которую вы должны запустить с.

Это означает, что вы сначала разрабатываете свои классы моделей, возможно, указываете некоторые детали отображения с помощью аннотаций данных или Fluent API и позволяете EF генерировать базу данных и схему базы данных. Во многих случаях вам вообще не нужны аннотации данных или Fluent API, потому что EF 4.1 следует набору соглашений , что означает, что EF может вывести необходимую схему базы данных из соглашений об именах ваших классов и свойств. Это делает отображение модели в базу данных очень простым во многих ситуациях.

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

В некотором смысле это дело вкуса, если вы хотите начать со схемы базы данных или модели (и, возможно, зависит от того, есть ли у вас за плечами могущественные администраторы баз данных, которым, возможно, не нравятся автоматически сгенерированные схемы баз данных). Но, по моему мнению, Code-First ускоряет вашу разработку.

Редактировать

На ваш вопрос об организации проекта: хорошо иметь представления и модели представления в одном ("WPF-UI") проекте, так как они в любом случае находятся близко друг к другу. Это также не неправильно, чтобы поместить модель и все вещи EF в этот проект. Но есть хорошие аргументы для того, чтобы переместить Model и EF в отдельный проект (библиотеку классов) в вашем решении. Это позволяет вам легче иметь другие приложения, которые обращаются к модели и базе данных (например, простые инструментальные программы (консольное приложение) для проверки чего-либо или выполнения работы с базой данных).

Многие люди также проголосовали бы за разделение модели и EF на отдельные проекты («Проект предметной или бизнес-логики» и «Проект уровня устойчивости EF» или что-то в этом роде). Но поскольку вы говорите, что начинаете, возможно, это слишком много слоистых абстракций, которые могут быстро выйти из-под контроля. Вы всегда можете провести рефакторинг на более поздней стадии, если вы хотите более сильное разделение интересов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...