2012-05-26 2 views
1

У меня есть представление SQL для интеграции с моим приложением. Я использую Entity Framework до сих пор. Но проблема в том, что когда я добавляю представление в Entity Framework, он начинает рассматривать мое представление как таблицу.SQL-представления с Entity Framework

Что я действительно хочу знать, я чего-то не хватает? Также, если я использую Nhibernate, эта проблема будет решена? Будет ли рассматривать это мнение только как точку зрения?

Этот вид представляет собой очень сложный запрос, который имеет несколько объединений и агрегацию. Вот почему я использую представление.

+0

И что не так с этим видом обработки «как стол»? – MarcinJuraszek

+0

Лучше вы публикуете код, который поможет нам помочь –

+1

Смотрите: [Entity Framework: создание модели с использованием представлений вместо таблиц] (http://smehrozalam.wordpress.com/2009/08/12/entity-framework-creating -a-model-using-views-вместо-tables /) или [Как использовать представления SQL Server с инфраструктурой Entity Framework) (http://www.mssqltips.com/sqlservertip/1990/how-to-use- sql-server-views-with-the-entity-framework /) - использование представления с EF не должно быть реальной проблемой ... –

ответ

1

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

Нет, это не так. Если вы добавите представление в свою модель с помощью мастера (дизайнер EDMX), он будет внутренне обрабатывать представление как определяющий запрос, который делает только для чтения. На уровне сущности (концептуальная модель) вы не видите разницы, потому что это просто другой объект/класс, но если вы попытаетесь внести изменения в экземпляр этого класса и сохраните их, вы получите исключение (если вы не наберете хранимые процедуры или пользовательские команды SQL для вставки, обновления и удаления операций для этого объекта).

Edit:

просмотров базы данных, а также другие базы данных конкретных функции, такие как хранимые процедуры и функция SQL только для базы данных первого сценария (при использовании модели обновления из базы данных в конструкторе).

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

Вы можете заставить VS создать представление для вас, но это большая работа в шаблонах T4, где вам нужно каким-то образом создать сценарий создания SQL для представления.

+0

Хорошо, я вижу вашу мысль. Но когда я выбираю «Создать базу данных из модели», он создает таблицу вместо представлений. Есть ли другой способ создания базы данных? – Tushar

+0

Я обновил свой ответ. –

+0

Спасибо, Ладислав, это было действительно полезно. То, что я собираюсь сделать, - объединить структуру сущностей и некоторый инструмент миграции db, как плавная миграция.Так что я могу управлять представлениями sql и другими конкретными элементами db и по-прежнему иметь преимущества инфраструктуры сущностей, которые будут создавать сущности из базы данных. – Tushar