Ger Hayden Ответов: 0

Как ограничить столбцы в запросе 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

Это решение проблемы! Положите его в коробку с решением, чтобы я мог принять и оценить его.

0 Ответов