【发布时间】:2013-10-04 13:49:50
【问题描述】:
我在通过实体框架更新数据库时遇到问题。
我的 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();
}
}
【问题讨论】:
-
尝试将您的绑定设置为
Mode=TwoWay -
你是否在 SaveChanges() 的调试模式下设置了断点?
-
Mode=TwoWay 已设置。是的,当我在这一行设置断点时,我可以看到我的更改是如何保存在实体模型中的
-
如果在DataGrid_RowEditEnding中放了一个断点,是否可以查看item来确认对象的状态是被编辑的?
-
我的问题几乎没有改变
标签: c# .net wpf database entity-framework