У меня есть класс 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, которое я использую для привязки dataGrid к представлению, в конструкторе Iсделать это:
public myViewModel()
{
_dataManager = new DataBaseManager();
Authors = _dataManager.ColectionAuthors;
}
У меня есть представление с dataGrid, кнопка для обновления изменений и кнопка для поиска авторов.
Если я сначала ищу авторов, если в dataGridЯ удаляю, добавляю или изменяю элементы, а затем нажимаю кнопку, чтобы обновить изменения, все работает нормально, добавляю, удаляю или обновляю информацию, и при повторном поиске я вижу правильную информацию.
Однако, еслиЯ не делаю первый поиск, я только добавляю регистр, потому что у меня нет регистров dataGrid для изменения или удаления.Что ж, если я добавлю регистр и нажму кнопку обновления, изменения не будут сохранены в базе данных.
Я думаю, что это потому, что context.Authors.Local не был "создан", пока ясделать первый поиск, поэтому, когда я делаю Authors = _dataManager.ColectionAuthors;Я не могу добавить элемент в local, поэтому, когда я выполняю savechanges (), нет локальных элементов для сохранения в базе данных.
Я прав?Есть ли способ добавить элементы в контекст перед выполнением первого поиска?
Спасибо.Daimroc.