Привязка WPF DataGridComboBoxColumn: «DeferRefresh» не разрешена во время транзакции AddNew или EditItem?

Получил DataGridComboBoxColumn в сетке WPF, но возникли проблемы с привязкой. Я могу успешно привязаться к свойству ObservableCollection<String>, но когда я пытаюсь привязаться к столбцу в ObservableCollection<T> таблицы сущностей EF, я получаю исключение, несмотря на то, что связанный столбец является varchar:

'DeferRefresh' is not allowed during an AddNew or EditItem transaction'

Вот мой Xaml:

<DataGrid Margin="5" AutoGenerateColumns="False" ItemsSource="{Binding MembershipsCollection}">
   <DataGrid.Columns>
      <DataGridComboBoxColumn Header="Region" Width="SizeToHeader" DisplayMemberPath="{Binding RegionShortCodeCollection}">
        <DataGridComboBoxColumn.ElementStyle>
             <Style>
                 <Setter Property="ComboBox.ItemsSource" Value="{Binding DataContext.RegionShortCodeCollection, RelativeSource={RelativeSource AncestorType={x:Type vm:AccountsViewModel}}}" />
              </Style>
             </DataGridComboBoxColumn.ElementStyle>
          <DataGridComboBoxColumn.EditingElementStyle>
               <Style>
                  <Setter Property="ComboBox.ItemsSource" Value="{Binding DataContext.RegionShortCodeCollection, RelativeSource={RelativeSource AncestorType={x:Type v:AccountsView}}}" />
                </Style>
             </DataGridComboBoxColumn.EditingElementStyle>
           </DataGridComboBoxColumn>
         <DataGridTextColumn Header="ProductCode" Binding="{Binding Path=ProductCode}" Width="SizeToHeader"/>                                                                  
        </DataGrid.Columns>
       </DataGrid>

и мой ObservableCollection<T> в ViewModel. Это заполняется методом, вызываемым из конструктора:

private ObservableCollection<String> _RegionShortCodeCollection;
public ObservableCollection<String> RegionShortCodeCollection
{
    get { return _RegionShortCodeCollection; }
    set
    {
        _RegionShortCodeCollection = value;
        OnPropertyChanged("RegionShortCodeCollection");
    }
}

Любые идеи относительно того, почему это происходит с одной коллекцией, а не с другой? Спасибо


person Hardgraf    schedule 03.09.2014    source источник


Ответы (1)


Я решил это. В базовой таблице БД был триггер INSERT, который препятствовал вставке из приложения. Я изменил триггер на «ПОСЛЕ ВСТАВКИ», который позволяет Entity Framework сохранить изменение до того, как триггер был вызван.

person Hardgraf    schedule 09.09.2014