Привязка не работает при начальном контексте с оператором USING - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть проблема с привязкой, когда я инициализирую контекст с помощью оператора using, Привязка к имени пациента будет пустой, если я использовал следующий код:

using (myEntities context = new myEntities ())
  {
      IQueryable<Appointment> query = context.Appointments.Where(s => s.AppointmentDate == _activeDate);
      ocAppointments = new ObservableCollection<Appointment>(query);

      lbShiftAppointments.ItemsSource = ocAppointments.Where(s => s.DoctorShift.ShiftNumber == 1);
  }

Но если я инициализирую контекст без using statment привязка работает:

myEntities context = new myEntities ();

IQueryable<Appointment> query= context.Appointments.Where(s => s.AppointmentDate == _activeDate);
ocAppointments = new ObservableCollection<Appointment>(query);

lbShiftAppointments.ItemsSource = ocAppointments.Where(s => s.DoctorShift.ShiftNumber == 1);

Это список

<ListBox x:Name="lbShiftAppointments" Style="{StaticResource GridBody}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <ToggleButton x:Name="tbtnShiftAppointment">
                        <StackPanel >
                            <TextBlock Text="{Binding patient.name}"/>
                        </StackPanel>
                    </ToggleButton>
                </StackPanel>
            </DataTemplate>
     </ListBox.ItemTemplate>
</ListBox>

Я в замешательстве, любая помощь


ОБНОВЛЕНИЕ Я загрузил небольшое приложение WPF со своей проблемой, вы можете скачать с ЗДЕСЬ

1 Ответ

0 голосов
/ 02 апреля 2020

Как загрузить связанные данные:

Существует несколько способов, которыми Entity Framework может загрузить связанные данные в свойства навигации объекта:

Ленивая загрузка : при первом чтении объекта соответствующие данные не извлекаются.

Стремительная загрузка : Когда объект считывается, вместе с ним извлекаются связанные данные. Обычно это приводит к единственному запросу на соединение, который извлекает все необходимые данные. Источник

Поэтому я указываю Eager loading, используя метод .include следующим образом:

using (myEntities context = new myEntities ())
  {
      IQueryable<Appointment> query = context.Appointments.Include("patient").Where(s => s.AppointmentDate == _activeDate);
      ocAppointments = new ObservableCollection<Appointment>(query);

      lbShiftAppointments.ItemsSource = ocAppointments.Where(s => s.DoctorShift.ShiftNumber == 1);
  }

Спасибо за FoggyFinder

...