Окружающая среда: EF6 код первогоEntity Framework: лучший способ выполнить многие запросы?
У меня есть две таблицы, например user
и activity
, которые имеют много-ко-многим.
Я хочу знать, имеет ли какое-либо действие пользователя заданный ключ, используя Entity Framework в приложении asp.net mvc.
является следующим результатом оценки результатов?
есть ли другой способ написать этот запрос?
Запрос:
var userEntity = _dbcontext.Users.Find(userId);
var isAvailable = _dbcontext.Entry(userEntity)
.Collection(e => e.Activities)
.Query().Any(e => e.Name== "givenname");
обновление:
я побежал эти запросы, и здесь время выполнения:
var userEntity = _dbcontext.Users.Find(userId);
var isAvailable = userEntity.Activities.Any(a => a.Name == "givenname");
Время: 5.39s + время для извлечения пользователем
var isAvailable =_dbcontext.Users.Include(e => e.Activities)
.Any(u => u.UserId == userId
&& u.Activities.Any(a => a.Name == "givenname")
);
Время: 5.73s
var userEntity = _dbcontext.Users.Find(userId);
var isAvailable = _dbcontext.Entry(userEntity)
.Collection(e => e.Activities)
.Query().Any(e => e.Name== "givenname");
время: 5.95s + время для извлечения пользователя
поэтому кажется, что выбор второй формы запроса будет разумным.
нет только одного пользователя, который является текущим пользователем, а также есть ли какой-либо способ без первого получения пользователя? – 1AmirJalali