Witam. W serwisie potrzebuję pobrać wszystkie rezerwacje określonych pokojów, których zakres rezerwacji zahacza o podany przedział. Czy możecie mi podpowiedzieć, gdzie może leżeć byk?
private async Task<Room[]> FindFreePlaceInBuildings(Building building, eGender gender, int count, DateTime accommodationTime, DateTime checkoutTime)
// Pobranie wszystkich pokojów z danego budynku
var rooms = await _dbContext.Rooms
.Where(x => x.IsActive)
.Where(x => x.BuildingId == building.Id)
.ToArrayAsync();
var roomsIds = rooms.Select(room => room.Id).ToArray();
// Pobranie wszystkich zajętych miejsc w pokojach w danym budynku i w danym okresie czasu
var accommodations = await _dbContext.AccommodatedPersons
.Include(x => x.Room)
.Where(x => x.Room != null)
.Where(x => roomsIds.Contains(x.RoomId.Value))
.Where(x => (x.AccommodatedFrom < accommodationTime && x.AccommodatedTo > accommodationTime) ||
(x.AccommodatedFrom < checkoutTime && x.AccommodatedTo > checkoutTime) ||
(x.AccommodatedFrom > accommodationTime && x.AccommodatedTo < checkoutTime) ||
(x.AccommodatedFrom < accommodationTime && x.AccommodatedTo > checkoutTime))
.GroupBy(x => x.Room)
.ToArrayAsync();
Otrzymuję wyjątek:
System.InvalidOperationException: The LINQ expression 'DbSet<AccommodatedPerson>
.LeftJoin(
outer: DbSet<Room>,
inner: a => EF.Property<Nullable<Guid>>(a, "RoomId"),
outerKeySelector: r => EF.Property<Nullable<Guid>>(r, "Id"),
innerKeySelector: (o, i) => new TransparentIdentifier<AccommodatedPerson, Room>(
Outer = o,
Inner = i
))
.Where(a => EF.Property<Nullable<Guid>>(a.Inner, "Id") != null)
.Where(a => __roomsIds_0
.Contains(a.Outer.Id))
.Where(a => a.Outer.AccommodatedFrom < __accommodationTime_1 && a.Outer.AccommodatedTo > __accommodationTime_1 || a.Outer.AccommodatedFrom < __checkoutTime_2 && a.Outer.AccommodatedTo > __checkoutTime_2 || a.Outer.AccommodatedFrom > __accommodationTime_1 && a.Outer.AccommodatedTo < __checkoutTime_2 || a.Outer.AccommodatedFrom < __accommodationTime_1 && a.Outer.AccommodatedTo > __checkoutTime_2)
.GroupBy(
source: a => a.Inner,
keySelector: a => a.Outer)' could not be translated.