Entity Framework - Смешивание подходов на основе модели и базы данных? - PullRequest
3 голосов
/ 01 марта 2011

Для моего первого проекта, использующего Entity Framework, я решил использовать подход «сначала модель», в котором я проектирую свои сущности, из которых будет создан скрипт для генерации необходимых таблиц базы данных. Это работало довольно хорошо, пока я не столкнулся с ситуацией, когда я не мог полностью извлечь все элементы данных, которые мне нужны в одном запросе (мои навыки LINQ по-прежнему ограничены).

Поскольку я могу легко написать запрос, который мне нужен, в SQL, мне было интересно, можно ли написать представление для моей базы данных, а затем сгенерировать из нее сущность в моей модели, другими словами, смешивая две модели / база данных подходит. Есть идеи по этому поводу?

Ответы [ 2 ]

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

Вы не можете смешивать сначала модель и сначала db.После того, как вы вручную измените базу данных, вы больше не сможете использовать Генерацию базы данных из EDMX или удалите изменения, выполненные непосредственно в БД.

В некоторых случаях этого можно избежать, загрузив Powerity Generation Database Pack для создания базы данных. расширение для Visual Studio 2010. При использовании этого расширения вместе с VS 2010 Premium или Ultimate вы можете использовать дополнительные рабочие процессы генерации БД и шаблоны T4, которые могут использовать инструменты VS для сравнения вновь сгенерированной БД с существующей БД и создания только сценариев ALTER.,

Но, тем не менее, это, скорее всего, не будет работать с представлениями БД, поскольку информация о представлении БД хранится в SSDL (описание модели хранилища).Модель-первая не использует Views, и каждый раз, когда вы регенерируете базу данных, она создает таблицу вместо view.

Поэтому, если вы хотите выполнить произвольный запрос SQL, используйте ExecuteStoreQuery (только EF4) илисначала модель.

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

Вам известен метод SqlQuery ()?

ctx.Listings.SqlQuery("SQL Query Here", p1, p2...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...