Как я могу создавать и использовать представления, используя код EF6 в первую очередь?


Существует ли на самом деле какая-либо официальная стратегия для создания и использования представлений с кодом EF6.1 в первую очередь? Я могу сначала преобразовать базу данных в код и получить таблицы, а не представления. Я могу сначала импортировать базу данных в модель и получать представления, а затем создавать БД из модели, и мой edmx изменяется, и представления преобразуются в таблицы. MSFT, кажется, имеет все, кроме покинутой модели в первую очередь, и новое обновление 2, кажется, имеет обратное проектирование для кода в первую очередь, так что я чувствую себя вынужденным преобразовать в код в первую очередь, но имеет Команда EF поддержала любой разумный подход к использованию представлений или хранимых процедур в коде в первую очередь? В конце концов, CF должен создавать БД, но что - вы больше не должны использовать ни одну из этих функций SQL Server в приложении .NET EF?

1 2

1 ответ:

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

public TestContext : DbContext
{
    public DbSet<User> AdminUsers { get; set; }
}

И у вас есть представление в базе данных с именем dbo.AdminUsers и он может быть сопоставлен с классом User (содержит все необходимые свойства с тем же именем, что и свойство).

Для хранимых процедур можно использовать функцию SqlQuery либо через свойство Database объекта DbContext. как:

var userActivityReport = context.Database.SqlQuery<UserActivityReport>(
    "dbo.GetUserActivityReport @p0, @p1", startDate, endDate);

Или через функцию SqlQuery класса DbSet:

var newUsers = context.Users.SqlQuery("dbo.GetNewUsers @p0", count);

Если вы хотите создавать, изменять или удалять представления и хранимые процедуры с помощью Entity Framework, вы можете использовать пользовательские операции миграции.http://dolinkamark.wordpress.com/2014/05/03/creating-a-custom-migration-operation-in-entity-framework/

Для лучшей интеграции событий вы можете использовать открытый API сопоставления с библиотекой, предоставленной членом сообщества: https://codefirstfunctions.codeplex.com/