UWP - entity framework core (dbcontext) привязка к dbset не обновляется
Всем привет,
Я работаю в UWP с EntityFrameWorkCore и SQLite.
Я пытаюсь привязаться к своему DbSet, но он не обновляется.
Я мог бы заставить свою привязку работать, когда я изменяю имя свойства, оно обновляется. Но ListView не обновляется, когда я добавляю/удаляю элементы в/из своего DbSet.
Вот мой код:
Вот и занятия. Обратите внимание, что привязка к DbSet при добавлении/удалении элементов не работает.
Но когда я изменяю имя, оно работает и обновляется.
public class ContactsContext : DbContext { public DbSet<Contact> Contacts { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite("Data Source=blogging.db"); } } public class Contact : INotifyPropertyChanged { private string _Name; public event PropertyChangedEventHandler PropertyChanged; [Key] public string Name { get { return _Name; } set { if (_Name != value) { _Name = value; NotifyPropertyChanged("Name"); } } } public void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } }
<ListView Name="myListView" ItemsSource="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center"> <ListView.ItemTemplate> <DataTemplate x:DataType="Data:Contact"> <TextBlock Text="{x:Bind Name}"/> </DataTemplate> </ListView.ItemTemplate> </ListView>
private void Page_Loaded(object sender, RoutedEventArgs e) { using (ContactsContext db = new ContactsContext()) { myListView.ItemsSource = db.Contacts; } } private void Adder_Click(object sender, RoutedEventArgs e) { using (ContactsContext db = new ContactsContext()) { db.Contacts.Add(new Contact { Name = myTextBox.Text }); db.SaveChanges(); } }
Что я уже пробовал:
Я уже пытался добавить
INotifyPropertyChangedк моему классу DataContext, но никакого эффекта.
public class ContactsContext : DbContext { private DbSet<Contact> _Contacts { get; set; } public event PropertyChangedEventHandler PropertyChanged; public string Contacts { get { return _Contacts; } set { _Contacts = value; NotifyPropertyChanged("Contacts"); } } public void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite("Data Source=blogging.db"); } }
Попытался создать другой класс, который был ObservableCollection для перечисления контактов. но
1) это выглядело очень сложным решением, и я думаю, что должно быть что-то проще.
2) он работал нормально, но у меня были некоторые проблемы при сохранении изменений (db.SaveChanges).
Кто-то жил через это и имеет какое-то фантастическое решение?
спасибо.