Проблема связывания EF и WPF Datagrid - PullRequest
2 голосов
/ 02 ноября 2011

Можно ли изменить имя сервера, к которому подключается 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);

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

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

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

1 Ответ

2 голосов
/ 16 ноября 2011

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

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

public ObservableCollection EPolicies {                     

  get { return ePolicies; } 

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

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

...