Antwort

2

ich wirklich wirklich zu schätzen die Tatsache, dass Menschen in der Gemeinde, die Zeit in Anspruch nehmen zu verpacken, Dokument, Freigabe und behalten ihren ehrfürchtigen Code für den Rest von uns - mir wirklich.

So Vielen Dank an alle Mitwirkenden zu SQLite, SQLiteNet und SQLite Net Extensions. Frank Krüger, Oystein Krog, Guillermo Gutiérrez Doral und alle anderen.

Jedoch .... Ähm, was!

fand ich die Antwort in diesem SO post

Ja, es ist normal. SQLite-Net Extensions ist auf SQLite-Net, das keine Unterstützung für Fremdschlüssel Einschränkungen, also hat keine Fremdschlüssel auf der Datenbank-Ebene deklariert.

Mit Kern SQLite-Net Methoden, die [ForeignKey] Eigenschaft ist nur eine Integer-Eigenschaft, die nicht jede Art von Einschränkung hat, so können Sie es ohne Laufzeitfehler nach Belieben ändern.

das heißt der Name des ForeignKey Attribut ist sehr irreführend. Es ist tatsächlich implementiert als ein einfacher Index

z.B. "Valuation_StockId" gibt ohne Datenintegritätsbedingung auf Datenbankebene aus.

So können Sie (auf der Datenbankebene direkt Daten einfügen, die nicht kohärent und nicht eingeschränkt ist) z. eine Bewertung, die auf eine Aktie verweist (über ihre Spalte StockId), die nicht existiert.

Nicht nur das, aber nichts in der Codebasis hindert Sie daran, das Gleiche zu tun.

Also seien Sie vorsichtig, Leute das Attribut "ForeignKey" stellt Ihnen tatsächlich überhaupt keine Fremdschlüsselbeziehung zur Verfügung.

Es ist kein Fremdschlüssel, und sollte nicht in einer Weise benannt werden, um zu empfehlen, es ist - in meinen Gedanken das ist wirklich gefährlich.

Noch einmal - danke an die Leute, die ihren ganzen Code an den Rest von uns freigegeben haben - und hoffentlich könnte dies jemand anderen helfen, der wie ich ihre Haare herausziehen versucht, herauszufinden, was sie falsch gemacht haben.

+1

Jeder angegebene Punkt ist korrekt. Ich werde die Dokumentation aktualisieren, um sie klarer zu machen. Über das Ändern des Attributnamens ... Vorschläge sind willkommen, ich konnte keinen besseren Namen selbst finden – redent84

+0

Schätzen Sie das - und schätzen Sie den tollen Code sehr.Habe über einen passenden Namen nachgedacht, werde nachdenken und dich wissen lassen, ob ich etwas besseres finde (es ist nicht einfach). Vielen Dank. ! – MemeDeveloper

+0

Von Kopf weg - wie wäre es mit ForeignEntity oder ForeignRow oder RelatedEntity oder RelatedRow? – MemeDeveloper