Исхоя из диаграммы, имеется три подхода к работе с данными в MVCCORE 2.0: Database First, Model First, и Code First.
Database First
В случае уже имеющейся базы данных Mvc Core 2.0можем автоматически создать модель данных, состоящую из классов и свойств, соответствующих объектам базы даных (таким, как таблицы и столбцы). Информация о структуре базы (store schema), модель данных (conceptual model) и маппинг их друг на друга содержится в XML в файле .edmx. Visual Studio предоставляет графический дизайнер, с помощью которого можно просматривать и редактировать .edmx.
Model First
Если базы нет, вы можете начать с создания модели данных, используя дизайнер Mvc Core Visual Studio. После окончания работ над моделью дизайнер сгенерирует DDL (data definition language)-код для создания базы. В этом подходе для хранения информации о модели и маппингах также используется .edmx.
Code First
Вне зависимости от наличия базы мы можем вручную написать код классов и свойств, соответствующих сущностям в базе и использовать этот код с Mvc Core без использования файла .edmx. Именно поэтому можно порой увидеть, как этот подход называют code only, хотя официальное наименование Code First. Маппинг между store schema и conceptual model в represented by your code is handled by convention and by a special mapping API. Если базы ещё нет, Mvc Core может создать, удалить или пересоздать её в случае изменений в модели.
|
|
API доступа к данным, разработанное для Code First, основано на классе DbContext. API может быть использован также и в процессе разработки с подходами Database First и Model First.
POCO (Plain Old CLR Objects)
По умолчанию для подходов Database First и Model First классы модели данных наследуются от EntityObject, который и предоставляет функциональность Mvc Core. Это значит, что эти классы не являются persistence ignorant и, таким образом, не полностью соответствуют одном из условий domain-driven design. Все подходы к разработке с Mvc Coreтакже могут работать с POCO (plain old CLR objects), что, в целом, значит, что они являются persistence-ignorant из-за отсутствия наследования EntityObject.
Разработка
Разработка базы данных системы