Ответы пользователя по тегу Entity Framework
  • Как правильно написать интерфейс для БД?

    Правильно будет не мешать DbContext с Repository.

    Создать интерфейс IRepository<T>, определить там сигнатуры методов Add, Update, Delete etc. Реализовать этот интерфейс в абстрактном базовом классе RepositoryBase<T>, добавив туда типизированное свойство DbSet<T>. Затем для каждой сущности создать конкретный класс(CommentsRepo, PostsRepo ... etc.), наследуясь от абстрактного RepositoryBase<T>. При необходимости, можно ещё и интерфейс для этой же сущности реализовать(если там отличная от CRUD логика).
    Ответ написан
    1 комментарий
  • ASP NET Identity - как подключить в разрабатываемый проект?

    Если нужен пример - создай пустой проект в Visual Studio на основе шаблона ASP.NET MVC, с отмеченным пунктом авторизации(Individual User Accounts он называется). И будет тебе создан контекст подключения к БД. Кроме того, автоматически реализуется простейшая логика регистрации, авторизации, восстановления пароля и т.д. - будет много чего посмотреть.

    UPD: В "Pro" версии книги по MVC 5 от Фримана уделяется отдельное внимание Identity. Если не ошибаюсь, чуть ли не 100 страниц - рекомендую взгянуть также. Pro ASP.NET MVC 5 Platform
    Ответ написан
    Комментировать
  • SQL Server Profiler - как разобраться в том что он показывает?

    Audit Login/Logout - индикация начала/завершения сеанса взаимодействия пользователя с сервером(во время создания/завершения connection-сессии).
    SQL:BatchStarting/BatchCompleted - индикация времени начала/завершения выполнения пакета. Под пакетом понимается набор одной или более T-SQL инструкций, передаваемых СУБД для исполнения в момент времени.
    RPC: Completed(Remote Procedure Call) - индикация успешного клиентского подключения извне и выполнения процедуры/пакета.

    Для анализа запросов достаточно отслеживать SQL:BatchStarting/Completed и RPC:Completed. Пользуйтесь фильтрами(имя пользователя, приложение), отбирайте наблюдаемые вхождения T-SQL перед началом трассировки.

    В вашем случае Entity Framework отправляет SQL-Batch на сервер; обращайте внимание на CPU - загрузка процессора сервера БД, Reads - количество чтений, Writes - записей , Duration - продолжительность операции в миллисекундах(10^-3). При выгрузке результатов трассировки в БД(очень удобная опция для анализа большого количества операций) или внешний источник секунды уже будут с приставкой "микро" или же 10^-6. Под RPC:Completed у вас выполняются регламентные команды SQL-сервера по установке/разрыву соединения.

    Полезные ссылки:
    SQL Server Tech Documentation - со стр. 878 инфа по профайлеру
    Batches
    Ответ написан
    Комментировать
  • Как создать вычислимое поле в модели Code First Entity Framework 6?

    Создать partial класс для сущности Document под именем Document.MyExtensionBlaBla.cs; добавить в него новое свойство TotalQuantity и определить логику его вычисления:

    public partial class Document
    {
         public decimal TotalQuantity => Rows.Sum(x => x.Quantity)
    }


    Впоследствии, к этому свойству можно обращаться из инстанса Document. Например, так:

    var totalSumByDocument = new dbCtx().Documents.Single(x => x.Id == id)).TotalQuantity;


    Где id - входной параметр искомого документа, представляющий собой его уникальный идентификатор.
    Ответ написан
    3 комментария