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 for Web.

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

person codebased    schedule 26.09.2014
comment
Връзката, която предоставихте, не работи (освен ако не сте възнамерявали да покажете страницата 404-Jedi ...) - person Matt; 04.12.2014