Dieser macht mich crasy: Ich habe ein EF-Modell auf einer Datenbank, die eine Tabelle mit dem Namen Kategorie mit 6 Zeilen enthält. Ich möchte dies in einer Dropdown-Liste in WPF anzeigen, also muss ich es an die Categories.Local
Observable-Auflistung binden. Das Problem ist, dass diese beobachtbare Sammlung niemals den Inhalt der Datenbanktabelle erhält. Mein Verständnis ist, dass die Sammlung synchron mit der Datenbank erhalten soll, wenn eine Abfrage oder Speicher von Daten mit SaveChanges()
Durchführung So lief ich die followin 2 Tests:in Entity Framework, bleibt DbSet.Local nicht synchron
Categories = _db.Categories.Local;
// test 1
Debug.WriteLine(_db.Categories.Count());
Debug.WriteLine(_db.Categories.Local.Count());
// test 2
_categories.Add(new Category() { CategoryName = "test" });
_db.SaveChanges();
Debug.WriteLine(_db.Categories.Count());
Debug.WriteLine(_db.Categories.Local.Count());
Debug.WriteLine(_categories.Count());
Der Test 1 zeigt 6 Zeilen in der Datenbank, und 0 in lokal. Der Test 2 zeigt 7 Zeilen in der Datenbank, und 1 in lokalen (beiden Versionen)
I atempted auch _db.Category.Load()
zu verwenden, aber wie erwartet, es funktioniert nicht, weil es db erstes ist, nicht in ersten Code.
Ich ging auch durch diese Seite https://msdn.microsoft.com/en-us/library/jj574514(v=vs.113).aspx, erstellte eine objektbasierte Datenquelle und verknüpfte mein Kombinationsfeld, ohne Erfolg.
Weiß jemand, was ich falsch mache? Vielen Dank im Voraus für Ihre Hilfe.
Warum denkst du '_db.Category.Load();' funktioniert nicht? Es ist nicht Code zuerst spezifisch. Beachten Sie, dass '_db.Categories.Count()' in eine SQL-Abfrage übersetzt und nichts in den Kontext lädt. –
Ich tippte '_db.Category.Load();' es und es sagt, dass die Methode unbekannt ist. Hast du versucht? Ich stimme zu, dass 'Count()' die Aufgabe möglicherweise nicht erledigt, aber ich verstehe nicht, wie ich nach dem Hinzufügen eines Elements und dem Speichern von Änderungen zu einer Zählung von 1 kommen kann, während sich 7 Zeilen in der Datenbank befinden. –
Es ist eine benutzerdefinierte Erweiterungsmethode. 'using System.Data.Entity;' sollte Ihnen Zugriff darauf geben (sowie viele andere innerhalb der 'QueryableExtensions' Klasse). 'Load' ist grundsätzlich' ToList' ohne eine Liste zu erstellen (nur um 'DbSet.Local' zu füllen). –