Карта, прочитанная с CRUD в EF 6 Fluent API

Вопрос:

Я чистил сеть, но не нашел ничего полезного. У меня есть класс POCO, который я хочу подключить к хранимой процедуре в Entity Framework 6.x. Я вижу, как это сделать в Fluent API для вложений, обновлений и удалений… но не для простого чтения.

Я нашел это: EF 6 Code First Stored Procedure – только для чтения, но он похож на какой-то метод на каком-то контроллере.

Есть ли способ, которым я могу назвать контекст, как если бы я был любым другим Entity. IE, ctx.Products.Where(p => p.ProductId == productId)?

Лучший ответ:

Я бы подошел, это один из двух способов.

Отображение домена /POCO

Если основной проблемой является несоответствие между вашей моделью Entity Framework POCO и вашим (предположительно чисто логическим) доменом, я бы сопоставлял модель EF напрямую с схемой базы данных, и соответственно сопоставлял их по типам доменов. Т.е. у вас есть отдельная модель домена для ваших EF poco. Работа с картографией, ранее выполненная вашим proc, будет затем выполняться внутри модуля отображения домена.

Абстрактное использование DbContext за репозиториями

Вместо того, чтобы пользователи напрямую запрашивали контекст, вы могли бы абстрагировать контекст репозиториев сущностей и сопоставить между SqlQuery, вызывающим proc и ваш POCO в методах репозитория

Например, вот примерный код:

public class MyEntityRepository()
{
    public ICollection<MyEntity> GetAll()
    {
        return _myContext.SqlQuery<MyEntity>("exec myProc", params); 
    }
}

Однако ни один из этих вариантов не будет быстро реализован и не будет введен в вашу кодовую базу.

Оцените статью
TechArks.Ru
Добавить комментарий