Проблема с привязкой EF и WPF Datagrid

#entity-framework #wpfdatagrid

#entity-framework #wpfdatagrid

Вопрос:

Возможно ли изменить имя сервера, к которому EF подключается на лету?

У меня одна и та же база данных на 5 серверах (разные среды, Dev, Test, UAT …), и я хотел бы написать приложение панели мониторинга для извлечения одной и той же информации с каждого сервера по очереди, просто выбирая среду из DDL.

Я использую Entity Framework 4 / WPF / C #. Новая ObservableCollection(context.EntitySet) привязана к сетке данных WPF в XAML. Это работает нормально. привязка сетки xaml выглядит следующим образом

 <grid:RadGridView ItemsSource="{Binding EPolicies}" IsReadOnly="True" RowDetailsVisibilityMode="VisibleWhenSelected" RowIndicatorVisibility="Collapsed" AutoGenerateColumns="False">
  

в модели представления я вызываю следующий код

              entities = new EpolicyEntities(environmentConnStr);
            customTexts = new ObservableCollection<C_CustomTextType>(from i in entities.C_CustomTextType select i);
            languages = new ObservableCollection<C_Language>(from i in entities.C_Language select i);
            userTypes = new ObservableCollection<C_UserType>(from i in entities.C_UserType select i);
            EPolicies = new ObservableCollection<EPolicy>(from e in entities.EPolicies select e);
  

entities — это ObjectContext, представляющий базу данных, к которой я подключаюсь

В первый раз это работает нормально, но во второй раз, даже если я вижу новые значения в объекте EPolicies, сетка не обновляется, поскольку я хотел бы, чтобы EPolicies — это свойство, определенное как показано ниже public ObservableCollection EPolicies { get { return ePolicies; } set { ePolicies = value; OnPropertyChanged(()=> EPolicies); } } Может кто-нибудь мне помочь, пожалуйста? Спасибо

Кто-нибудь это делал?

Ответ №1:

Хорошо, я узнал.

Проблема заключалась в том, что свойство

 public ObservableCollection EPolicies {                     

  get { return ePolicies; } 

  set {
      ePolicies = value; OnPropertyChanged(() => EPolicies); 
  }
}
  

вызывает OnpropertyChanged , но не Base.OnPropertyChanged .
Не уверен, почему это работает таким образом, может заключаться в том, что событие не запускается.
У кого-нибудь есть ответ?