EF 4.1 local:什么时候实例化?

时间:2012-01-31 11:57:54

标签: wpf entity-framework datagrid entity

我有一个类DataBaseManager,它使用EF 4.1来访问数据库。该类具有搜索数据库中的信息的方法搜索。简历版本是:

public ObservableCollecion<Authors> searchAuthtors()
{
    _Context.Authors.SqlQuery("select * from authors").ToList<Authors>();
    ColectionAuthors = _Context.Authors.Local;
    return ColectionAuthros;
}

此外,此类还有一个属性_colAuthors,public,用于将外部类与此数据管理器链接。在WPF中,它的想法是使用这个_colAuthors来绑定dataGrid。

好吧,在我的ViewModel中,我有一个属性Authors,我用来绑定View的dataGrid,在构造函数中我这样做:

public myViewModel()
{
    _dataManager = new DataBaseManager();
    Authors = _dataManager.ColectionAuthors;
}

我有视图,有一个dataGrid,一个用于更新更改的按钮和一个用于搜索作者的按钮。

如果我首先搜索作者,如果在dataGrid我删除,添加或修改项目,稍后我点击按钮更新更改,它工作正常,添加,删除或更新信息,如果我再次搜索,我可以看到正确的信息。

但是,如果我不做第一次搜索,我只添加一个寄存器,因为我没有在dataGrid寄存器中修改或删除。好吧,如果我添加寄存器并单击更新按钮,则更改尚未保存在数据库中。

我认为这是因为context.Authors.Local在我进行第一次搜索之前并没有“创建”,所以当我做Authors = _dataManager.ColectionAuthors;我无法将元素添加到本地,所以当我执行savechanges()时,本地没有元素可以保存在数据库中。

我是对的?有没有办法在进行第一次搜索之前向上下文添加元素?

感谢。 Daimroc。

0 个答案:

没有答案