Как ограничить столбцы в запросе dbcontext?
У меня есть запрос dbcontext к базе данных MySql, использующий EF Core 2, извлекаемый из моей таблицы usermaster.
Мой usermaster наследуется от IdentityUser, так что я могу воспользоваться преимуществами функций безопасности пользователей .NET Core.
Но я не реализую все столбцы в своем дочернем классе, например, электронную почту, которая находится на PersonMaster, потому что, хотя все пользователи-это люди, не все люди будут пользователями.
Автогенерированный оператор select, возникающий из этого фрагмента кода, вытягивает столбцы как из родительского, так и из дочернего классов
CUserMasterLocal dbEntry = context.UserMaster .FirstOrDefault(u => u.p_Username == user.p_Username);
Как мне ограничить его просто вытягиванием из дочернего класса?
Что я уже пробовал:
Я попытался реализовать один из столбцов, который не требуется в дочернем классе с помощью
[NotMapped]атрибут. Это не возымело никакого эффекта.
Позже сегодня я попробую что-то вроде этого:[^] чтобы посмотреть, доставит ли он мне удовольствие.
Независимо от этой проблемы, это выглядит как хорошая практика, потому что если мои дни Oracle научили меня чему-то все эти годы назад, то избыточные столбцы в select kill performance.
Maciej Los
Есть ли какие-либо проблемы с написанием пользовательского оператора select?
var myData = context.UserMaster .Where(u => u.p_Username == user.p_Username) .Select(x => new {whatever_you_want});
Ger Hayden
Привет, Мацей, я попробую это сделать сегодня вечером (как только уберу дневную работу с дороги). Я только сейчас понял, что это возможно.
ZurdoDev
По-моему, это решение проблемы.
Maciej Los
Давайте выясним ;)
Ger Hayden
Это решение проблемы! Положите его в коробку с решением, чтобы я мог принять и оценить его.