Frage

Wie kann ich feststellen, einem LINQ-Datenkontext entweder bestimmte Eigenschaften oder alle Nur-Lese-Eigenschaften zu ignorieren, wenn auf ein Objekt eine Ergebnismenge verbindlich?

ich mit einigen T-SQL-Anweisungen arbeitete schwer auszudrücken LINQ verwenden, so dass ich mit der ExecuteQuery Methode des Datenkontextes den gerade T-SQL in die Datenbank zu übergeben.

Wenn meine Klasse T keine Nur-Lese-Eigenschaften hat, erhalte ich Ausnahmen zur Laufzeit, wenn der Datenkontext dieser Eigenschaften zu setzen versucht und versagt, weil es keine Set-Eigenschaft ist. Wie kann ich feststellen, den Kontext, diese Eigenschaften zu ignorieren?

Dies ist, was ich jetzt tue. Es funktioniert, aber es nervt:

public bool IsPaidInFull {
    get { return NetTotal <= 0m; }
    set { /* needed so linq doesn't choke. Should never be set by hand */ }
}
War es hilfreich?

Lösung

Haben Sie Linq to Entities in Betracht gezogen? Es kann nicht lohnt die Mühe Ihr Projekt zu konvertieren, je nachdem, wie weit Sie sind, oder wie viele ORM-Overhead Sie sind komfortabel mit. Dies würde jedoch genaue Szenario kein Problem in Linq to Entities sein. Es versucht nicht nur Objekte im Objekt lesen zu aktualisieren, wenn es geladen wird, weil sie nicht explizit zugeordnet werden, sind sie einfach Dehnungseigenschaften.

Auch könnten Sie die Old-School / java Weg gehen durch Getter-Funktionen anstelle von Eigenschaften verwenden. public bool getIsPaidInFull () {return NetTotal <= 0m;}.

Oder könnten Sie mit der Umsetzung der Nur-Lese-Eigenschaften in einer vererbten Kind Klasse spielen, um, aber das kann alle Arten von Typ Schwierigkeiten hervorrufen.

Andere Tipps

public bool IsPaidInFull
{
    get { return NetTotal <= 0m; }
    private set { ;}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top