我有一个WPF MVVM应用程序,其DataGrid绑定到DbSet<> .Local返回的ObservableCollection。网格正确显示数据库中的内容,对网格的更改会更改ObservableCollection,但不会将更改保存回数据库。
Context.cs
public class AppContext: DbContext
{
public AppContext() : base("name=DefaultConnection")
{
}
public DbSet<Field> Fields { get; set; }
}
ViewModel.cs
public class EditorViewModel : NotificationObject
{
private ObservableCollection<MyEntity> _myEntities;
private string _message;
public EditorViewModel()
{
var db = new AppContext();
db.MyEntities.Load();
this.MyEntities = db.MyEntities.Local;
}
public ObservableCollection<MyEntity> MyEntities
{
get
{
return _myEntities;
}
set
{
if (_myEntities != value)
{
_myEntities = value;
RaisePropertyChanged("MyEntities");
}
}
}
}
我原以为ObservableCollection的更改会自动写回数据库吗?或者SaveChanges是否需要在某处调用?
答案 0 :(得分:1)
所以对此的答案是使用DbSet&lt;&gt; .Local使ObservableCollection与上下文保持同步,然后只需要在上下文中调用SaveChanges以写回数据库。