2015-01-11 7 views
5

Der Titel sagt es. (um klar zu sein, SQLite.NET gehostet here)Ist es möglich, SQLite.NET mit unveränderlichen Datensatztypen zu verwenden?

Alle Beispiele arbeiten mit veränderbaren Datensatztypen, das heißt, sie haben { get; set; } in jeder Eigenschaft Definition. Ich möchte in meinem Projekt zwar veränderbare Typen loswerden, aber SQLite.NET scheint ein mögliches Hindernis zu sein.

Wenn ich versuche, ein Abfrageergebnis mit 1 Spalte des Typs System.String zu erhalten, schlägt es zum Beispiel fehl. So ist es möglich, dass SQLite.NET Konstruktoren anstelle von Property Settern verwendet, oder ich veränderbare Typen zum Abrufen und Speichern von Daten in SQLite.NET verwenden?

Antwort

5

Ich kann nicht sicher sagen, wenn Sie SQLLite Constructors anstelle von Eigenschaften verwenden können. Das heißt, ich bezweifle es sehr.

Die Verwendung von Eigenschaften ist viel einfacher, da Sie Reflektion verwenden können, um das passende Element zu finden, das mit dem Spaltennamen übereinstimmt. Das mit einem Konstruktor zu tun wäre extrem schmerzhaft. In dieser Hinsicht funktioniert so ziemlich jedes andere ORM genau so.

Wenn Sie wirklich unveränderliche Typen verwenden möchten, müssen Sie einen Wrapper um das ORM platzieren, der die aufgefüllten Objekte übernimmt und ein anderes-Objekt zurückgibt, das nur unveränderbare Eigenschaften hat. Wenn Sie wirklich möchten sicherstellen, dass niemand jemals die veränderbaren Typen verwendet, machen Sie sie internal und legen Sie sie in einer separaten Baugruppe.

Zugegeben, dies ist eine Menge zusätzlicher Arbeit nur für unveränderliche Typen, aber angesichts der Natur der ORMs, ist es so ziemlich Ihre einzige Option.