Как использовать Entity Framework 4 против системных представлений в SQL Azure? - PullRequest
2 голосов
/ 21 августа 2010

Я новичок в Entity Framework, поэтому я хотел бы попробовать что-то простое, чтобы начать работать с Visual Studio 2010.

Предположим, я начинаю со следующего оператора SQL (View sys.databasesсуществует в базе данных master в SQL Azure):

SELECT name, create_date
  FROM sys.databases
 WHERE database_id > 3

Таким образом, вместо использования традиционного ADO.NET для выполнения этого SQL и использования DataReader для вставки результатов в пользовательский класс, я пытаюсь сделать что-то в EFway.

Итак, я попытался создать Entity Data Model.В мастере мне предоставляется два варианта: «Создать из базы данных» или «Пустая модель».Я попытался «Создать из базы данных», но мастер не перечисляет подавляющее большинство представлений в основной базе данных.Таким образом, этот подход представляется тупиком.Затем я попробовал «Пустую модель», которая немного больше (для этого новичка) и настаивает на добавлении префикса «баз данных» к «dbo», и мне нужен «sys».Так что я в основном застрял, и я не нашел примеров людей, использующих EF для работы с системными представлениями.

У кого-нибудь есть подробные примеры выполнения этого?Большое спасибо.

Ответы [ 3 ]

1 голос
/ 04 января 2012

Создайте новое представление, которое возвращает желаемое системное представление, а затем используйте его в своем дизайне EDMX.

Например:

CREATE VIEW [dbo].[SysDatabasesView] AS SELECT * FROM sys.databases

, затем используйте SysDatabasesViewвместо sys.databases.

0 голосов
/ 28 мая 2015

Хорошо ... Вам просто нужно добавить Master DB в EDMX и импортировать системное представление sys.databases.

0 голосов
/ 21 января 2012

, если цель состоит в том, чтобы использовать текст данных EF, создайте в EF комплексный тип 'DB', содержащий name и create_date.

Выполните запрос напрямую, используя ExecuteStoreQuery

static readonly String dbCommand = @"select [name],create_date from sys.databases where id > 0";
context.ExecuteStoreQuery<DB>(dbCommand);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...