I finally managed to solve this!
Instead of these lines:
persons = new BindingList<Person>(p); //getting bindinglist
...
pSource.DataSource = persons;
i use this line:
pSource.DataSource = _context.Persons.Local.ToBindingList();
Where Persons is a DbSet<> from my DbContext
And one more thing that that i couldn't figure out was trying to make this work with derived EF model classes - let's say i have a BasePerson class and DerivedPerson class. EF creates DbSet only for BasePerson (that includes all derived instances, that are accessible through OfType method) I couldn't get to work .Local.ToBindingList for these derived classes.
The trick for the derived classes was to add DbSet for those Derived classes in DbContext class!