различия objectcontext и dbcontext при привязке

Я использовал ObjectContext в своих проектах, но теперь я пробую DbContext, я обнаружил некоторые различия, которые я не понимаю, при привязке к источнику данных, например

ИСПОЛЬЗОВАНИЕ DbContext

Я связываю источник данных следующим образом

DbSet<Client> Clients = ctx.Client;
Clients.Load();
bsClients.DataSource = Clients().Local.ToBindingList();
bsClientPhones.DataSource = ((Client)bsClients.Current).Phone; // this line doesn't work

Когда я привязываю «bsClientPhones» таким образом, сетка не показывает изменения при добавлении или удалении, пока я не сохраню и не перезагружу данные. Я не могу преобразовать его в Local или Bindinglist.

Я не знаю, правильно ли это использовать DbContext. Пожалуйста, кто-нибудь может мне помочь? Я читал много документации, но я потерялся.


person Daniel Valencia    schedule 26.09.2014    source источник


Ответы (1)


Вам нужно будет реализовать ObservableCollection на уровне объекта и предоставить то же самое для ваших сеток.

   public class ObservableListSource<T> : ObservableCollection<T>, IListSource
        where T : class
    {
        private IBindingList _bindingList;

        bool IListSource.ContainsListCollection { get { return false; } }

        IList IListSource.GetList()
        {
            return _bindingList ?? (_bindingList = this.ToBindingList());
        }
    } 

this.categoryBindingSource.DataSource =
                _context.Categories.Local.ToBindingList();

После каждого изменения нужно звонить this.categoryDataGridView.Refresh();

Вот краткая демонстрация, которую я могу дать с DataGridView. То же самое относится к форме GridView для веб-сайтов.

https://github.com/codebased/tm/tree/master/WindowsFormTestConsole

person codebased    schedule 26.09.2014
comment
Предоставленная вами ссылка не работает (если только вы не намеревались отобразить страницу 404-Jedi...) - person Matt; 04.12.2014