DbSet<> .Local ObservableCollection未保存到EF上下文数据库

时间:2014-12-08 16:26:17

标签: entity-framework mvvm prism wpfdatagrid

我有一个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是否需要在某处调用?

1 个答案:

答案 0 :(得分:1)

所以对此的答案是使用DbSet&lt;&gt; .Local使ObservableCollection与上下文保持同步,然后只需要在上下文中调用SaveChanges以写回数据库。

http://msdn.microsoft.com/en-gb/data/jj592872.aspx