Wie kann ich einem LINQ-Datenkontext mitteilen, bestimmte Eigenschaften oder alle schreibgeschützten Eigenschaften zu ignorieren, wenn eine Ergebnismenge an ein Objekt gebunden wird?
Ich arbeite mit einigen T-SQL-Anweisungen, die mit LINQ nur schwer auszudrücken sind. Daher verwende ich die ExecuteQuery-Methode des Datenkontexts, um das direkte T-SQL an die Datenbank zu übergeben.
Wenn meine Klasse T über schreibgeschützte Eigenschaften verfügt, erhalte ich zur Laufzeit Ausnahmen, wenn der Datenkontext versucht, diese Eigenschaften festzulegen, und schlägt fehl, weil keine Setter-Eigenschaft vorhanden ist. Wie erkläre ich dem Kontext, diese Eigenschaften zu ignorieren?
Das mache ich jetzt. Es funktioniert, aber es ist scheiße:
%Vor%Haben Sie Linq für Entitäten in Betracht gezogen? Es ist vielleicht nicht die Mühe wert, Ihr Projekt zu konvertieren, je nachdem, wie weit Sie sich entfernt haben oder wie viel Aufwand Sie mit dem Projekt haben. Dieses genaue Szenario wäre jedoch in Linq to Entities kein Problem. Es versucht nicht, schreibgeschützte Eigenschaften im Objekt zu aktualisieren, wenn es geladen wird, da sie nicht ausdrücklich zugeordnet sind, sondern lediglich Erweiterungseigenschaften.
Sie könnten auch die Oldschool / Java-Route verwenden, indem Sie Getterfunktionen anstelle von Eigenschaften verwenden. public bool getIsPaidInFull () {return NetTotal & lt; = 0m;}.
Oder Sie könnten mit der Implementierung der schreibgeschützten Eigenschaften in einer geerbten untergeordneten Klasse experimentieren, aber dies kann zu allen Arten von Typproblemen führen.
Tags und Links .net linq linq-to-sql datacontext