Моя общая цель - вернуть награды с TeamIds, которые соответствуют списку идентификаторов, переданных из фильтра. Я ищу
- Проверка правильности построения моей модели
- Помощь в написании кода для возврата вознаграждений (необходим тип возврата IQueryable).
Вот упрощенная версия моей модели. Одна награда может иметь много команд, связанных с ней. Кроме того, у одной команды может быть много наград (но меня это не волнует. Мне нужно только go от Награды до команды).
public class Award
{
[Key]
[ForeignKey("Teams")]
public int AwardId { get; set; }
//navigation property
public virtual ICollection<AwardTeamMap> Teams{ get; set; }
}
public class AwardRoleMap
{
[Key, Column(Order = 0)]
public int AwardId { get; set; }
[Key, Column(Order = 1)]
public int TeamId { get; set; }
}
В моем dbcontext у меня есть это:
modelBuilder.Entity<Award>()
.HasMany(m => m.GuruTeams)
.WithOptional()
.HasForeignKey(a => a.AwardId);
Теперь я пытаюсь вернуть награды с TeamIds, которые соответствуют целым числам, предоставленным фильтром, с которым взаимодействует пользователь (filter.IntValues).
Когда я запускаю это, я может ли это ошибка времени выполнения: в этом контексте поддерживаются только примитивные типы или типы перечисления.
Я чувствую, что должен быть лучший способ получить TeamIds, но я изо всех сил.
var awards = from award in baseAwardQuery
from AwardTeams in db.Awards.Queryable.Where(a => filter.IntValues == a.Teams.Select(x => x.TeamId)
&& a.AwardId == award.AwardId)
select award;