我有一个类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。