エンティティ フレームワークによるデータベースの更新に問題があります。
私の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();
}
だから..データコンテキストは更新されますが、データベースは更新されません。エンティティ モデルの作成時にデータベース (.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();
}
}