Frage

OK, ich habe ich bestätigt, nur dieses Problem, wenn ich auf dem Primärschlüssel abzufragen versuchen, wenn das Primärschlüssel in der Einheit ‚Auto generierte Value‘ gesetzt - aber w / o dies, wie kann ich einsetzen? Sorry, wenn dies ein noob linq2sql ist, aber ich habe gerade angefangen, damit zu arbeiten.

Wie geht ein über Linq verwenden, um SQL mit dieser Option ausgeschaltet haben aber auch die db die pk Griff? Ich würde es hassen, jedes Mal müssen QRY die pk bekommen i zuweisen soll ...

Ich hoffe, jemand kann mir helfen, im völlig unfähig Linq zu verwenden, in eines meiner Projekte auf SQL, nicht wirklich sicher, was ... hier zu tun ist ein Beispiel, diese Linie wirft eine Ausnahme Stackoverflow.

MyDataContext dc = new MyDataContext(ConnStr);
var obj = dc.MyDataTable.AsQueryable().SingleOrDefault(a => a.pkID == 4);

. - Die zweite Zeile der Stackoverflow Ausnahme auslöst

Heres ein weiteres Beispiel der gleiche Datacontext mit

var o = dc.MyDataTable.Take(1); <-- works fine
var abc = o.ToArray();  <-- unable to evaluate, debugger stops

Alle Ideen, was ich kann versuchen? Ich scheine in Ordnung zu sein Linq Verwendung in einem anderen Projekt in der gleichen Lösung auf SQL.

- UPDATE-- Ich vergaß zu erwähnen, dass diese besondere Einheit ‚MyDataTable‘ den pk Satz wie ‚Auto generiert Value‘ hat -. Ich habe es auf diese Ursache gesetzt ich habe Autoinkrement SQL tun, und das ist die Identität Spalte

War es hilfreich?

Lösung

Wie wird PKID umgesetzt? Jede Chance, es ist rekursiv in irgendeiner Weise?

Andere Tipps

Der Take(1) Arbeits überrascht mich nicht, da dies nicht wirklich etwas auszuführen (es aufgeschoben wird, bis die Daten wiederholt wird).

Das ist ein interessantes Problem - nicht zuletzt, weil die SingleOrDefault(x=>x.ID == id) tatsächlich hat unterschiedliche Verarbeitung intern -. es dies als Primärschlüsselsuche erkennt und überprüft die Identität Manager ersten

EDIT Als off-the-wall Sache, .Where(x=>x.ID == id).SingleOrDefault() versuchen - gemäß dem Bug (iV Link), das verwendet nicht die Identität Lookup-Trick bis 4,0 Schiffe.

würde ich fragen, beginnen werden:

  • gibt es etwas seltsam in der ID-Getter / Setter (haben Sie hinzugefügt Code?)
    • Sie getan haben alles in einer Teilklasse für diese Art?
  • ist es Teil einer Vererbungskette?
    • und wenn ja, haben Sie mit einer Teilklasse für den übergeordneten Typ monkeyed?
  • Haben Sie etwas im Call-Stack-Fenster bekommen, wenn es explodiert?

Das war ein in LINQ korrigiert Fehler 4.0

http: // damieng .com / blog / 2009/06/01 / Linq-to-sQL-Änderungen-in-net-40

  

Abfrage Stabilität Enthält erkennt nun selbst verweis IQueryable und verursacht keinen Stack-Überlauf

In .NET 3.5 das Problem zu lösen:. Bei der Verwendung von 'Auto generiert Value' = True, dann müssen Sie 'Verzögerung Loaded' auf False gesetzt - sonst laufen Sie Rekursionsfehlers bekommen

Ihre Datentabelle ist zu groß!

Bearbeiten. Ist MyDataTable wirklich ein Datatable? Oder ist es tatsächlich ein LINQ to SQL-Tabelle <...>? Wenn ja, entfernen Sie die AsQueryable ().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top