簡體   English   中英

EntityFramework不會更新數據庫

[英]EntityFramework doesn't update database

我在通過實體框架工作更新數據庫時遇到問題。

我的XAML代碼:

<DockPanel Grid.Row="1"
           Margin="0,5,0,0"
           DataContext="{StaticResource directoryViewSource}">
  <DataGrid ItemsSource="{Binding}"
            AutoGenerateColumns="False"
            RowEditEnding="DataGrid_RowEditEnding">
    <DataGrid.Columns>
      <DataGridTextColumn Header="Id"
                          Binding="{Binding Path=id}"
                          Width="50"
                          CanUserResize="True"
                          IsReadOnly="True" />
      <DataGridTextColumn Header="Name"
                          Binding="{Binding Path=name, Mode=TwoWay}"
                          Width="*" />
      <DataGridTextColumn Header="Sername"
                          Binding="{Binding Path=sername, Mode=TwoWay}"
                          Width="*" />
      <DataGridTextColumn Header="Address"
                          Binding="{Binding Path=address, Mode=TwoWay}"
                          Width="*" />
      <DataGridTextColumn Header="Email"
                          Binding="{Binding Path=email, Mode=TwoWay}"
                          Width="*" />
      <DataGridTextColumn Header="Modified_by"
                          Binding="{Binding Path=users.user_name}"
                          Width="*"
                          IsReadOnly="True" />
    </DataGrid.Columns>
  </DataGrid>
</DockPanel>

和C#代碼:

        WpfApplication1.db_test_directoryEntities1 db_test_directoryEntities1;

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

            this.db_test_directoryEntities1 = new WpfApplication1.db_test_directoryEntities1();
            System.Windows.Data.CollectionViewSource directoryViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("directoryViewSource")));
            System.Data.Objects.ObjectQuery<WpfApplication1.directory> directoryQuery = this.db_test_directoryEntities1.directory;
            directoryViewSource.Source = directoryQuery.Execute(System.Data.Objects.MergeOption.AppendOnly);
        }

        private void DataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
        {
            this.db_test_directoryEntities1.SaveChanges();
        }

因此,.Datacontext更新,但數據庫未更新。 創建實體模型時已創建數據庫(.mdf1)。 你怎么看? 為什么數據庫不更新

如果我在SaveChanges()上設置一個斷點,則可以看到如何在ReportPropertyChanged(“ name”)上停止設置; 和方法OnnameChanged(); 不使用

public global::System.String name
        {
            get
            {
                return _name;
            }
            set
            {
                OnnameChanging(value);
                ReportPropertyChanging("name");
                _name = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("name");
                OnnameChanged();
            }
        }

在提交修改后的行之前,將觸發RowEdidEnding。 可能是在保存更改之前將更改提交到綁定對象。

一個(不是很干凈的)解決方案可能是:

private void DataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
      Dispatcher.BeginInvoke(
         new Action(()=>this.db_test_directoryEntities1.SaveChanges()), 
         System.Windows.Threading.DispatcherPriority.Background);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM