EF 4.1 local: когда это происходит? - PullRequest
0 голосов
/ 31 января 2012

У меня есть класс 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.

...