Не генерировать БД, а сопоставить с существующими таблицами - PullRequest
2 голосов
/ 18 февраля 2011

Мы хотели бы сначала использовать модель для генерации чистых EF-моделей для нашего приложения, но вместо того, чтобы модель генерировала новую схему БД, мы хотели бы затем вручную выполнить сопоставление таблицы в сущности с существующей таблицей базы данных илистолы.Есть ли механизм для этого?

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Конечно.

Это называется Entity Framework Code-First , и это хорошее руководство, которое поможет вам начать .

Идея состоит в том, что вы создаете несколько классов POCO отдельно от вашего класса Repository / Database.В этом классе Repository / Database вы определяете все отношения между вашими POCO.К счастью, Entity Framework имеет ряд соглашений , которые вы можете использовать, что означает, что вам может не потребоваться определять каждое отношение и правило.

Например.Если ваш класс называется User, то он будет предполагать (по умолчанию, если вы не переопределите это), что таблица базы данных называется Users, а поле идентификатора первичного ключа в POCO будет UserId и таким же втаблица базы данных.

0 голосов
/ 15 февраля 2013

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

Итак, мы хотели сначала рассмотреть модель как вариант для построения более мелких и чистых моделей, а затем отобразить их в наших существующих таблицах в нашей базе данных.

Это то, что мы узнали.

Модель сначала генерирует схему БД, которая войдет в «существующую БД». Это несколько вводит в заблуждение изначально, потому что люди думают, что это создает новый БД. Это на самом деле не создает саму БД. БД должна существовать, а затем модель сначала генерирует сценарии t-sql, которые войдут в БД.

Он генерирует эти сценарии в новом файле .sql в вашем проекте, который затем можно просмотреть или отправить в dba, если он у вас есть.

Он будет генерировать эти сценарии как CREATES для таблиц, предполагая, что ваши таблицы не существуют.

Так, например, если вы создали в модели сущность «Клиент», она сгенерирует файл сценария (* .sql), содержащий CREATE TABLE T-sql для создания таблицы покупателя для вашей сущности покупателя, которую вы можете затем запустите существующую базу данных sql.

Так что это то, для чего он предназначен, генерировать чистые таблицы для новой модели.

Значит ли это, что вы не можете использовать его вообще, если ваши таблицы уже существуют? Нет, ты можешь использовать это. Вы просто не будете запускать сценарии Create, которые он генерирует. Я не верю, что это было действительно разработано для этого, но мы проверили это, и это работало.

Там, где вы можете столкнуться с дополнительными проблемами в первую очередь с моделью, и мы обнаружили ограничение: поскольку модель в первую очередь предназначена для генерации новой схемы БД, вы не можете отобразить существующие хранимые процедуры. Это было проблемой для нас, поэтому мы сначала исключили модель в качестве опции для нашей архитектуры.

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

0 голосов
/ 18 февраля 2011

Не уверен, что я понимаю вопрос, но когда вы используете мастер для создания новой модели данных Entity, первый шаг позволяет вам «Генерировать из базы данных», просто укажите его в существующей БД.Затем вы можете вырезать ненужные таблицы и / или изменить сопоставления таблиц вручную.Также есть возможность выбрать, какие таблицы вы хотите представить в своей модели.

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