2016-06-03 16 views
0

Ich verwende derzeit eine generische Menge von X-Typ, wo der Typ ist eine der erzeugten Entitäten warf EF. Um meinen generischen Satz zu erhalten, um Daten erhält ich tun, um diesenef generischer Satz möglicher Fehler?

var entityData = db_entities.Set(EntityType); 

Jetzt leite ich eine einfache Prüfung, die zählt, wie viele Elemente in dem Satz ist und wenn es gleich 0 (zum Beispiel) wird es etwas tun (throw Ausnahme, Redirect, etc ..). das Problem ist, wenn ich zählen, wie viele Elemente in der Liste sind sie wie folgt geht (unter Code)

if (entityData.Local.Count == 0) { } 

wenn ich debuggen, um zu sehen, was genau Local geschieht nicht über einen der Werte, wenn ich die erweitern results view es zeigt 11 Daten (zum Beispiel) und wie ich sehe, dass die Local aktualisiert und zeigt die Daten. Ich frage mich, ob ich etwas falsch mache oder es ein Fehler ist.

bearbeiten
änderte ich die Logik, da es nicht dies durch die Verwendung nicht funktioniert, in der Hoffnung auf eine Antwort oder eine andere Art und Weise

var countItems = 0; 

     foreach (var item in entityData) 
     { 
      //this was added due to a bug when counting the dbSet items 
      //will exist after looping first item 
      countItems++; 
      break; 
     } 

     if (countItems == 0) {} 

Antwort

1

DbSet.Local enthält die Einheiten, die bereits geladen sind. Wenn Sie also ein Set erstellen und dann Local.Count lesen, muss es 0 sein, weil noch nichts geladen wurde.

In der Debug-Ansicht werden beim Erweitern der Ergebnisse die Daten aus der Datenbank geladen, und Local enthält jetzt ebenfalls Entitäten.

Sie können die Set durch laden:

var entityData = db_entities.Set(EntityType); 
entityData.Load(); 

Jetzt sehen Sie, dass Local.Count die tatsächliche Anzahl der Elemente in der Datenbank zeigen.

Verwandte Themen