In UWP genieße ich die Vorteile der Verwendung von SQLite.Net-PCL, Erstellen von Klassen in Apps als ObservableCollections verwendet werden, um an die GridView zu binden. Nach dem Einschließen von SQLiteNetExtensions zum Erstellen einer Datenbank mit Fremdschlüsseln ist mir aufgefallen, dass die Fremdschlüssel bei der Anzeige der Datenbank in SQLite Maestro nicht wirklich erstellt wurden. Indizes werden stattdessen erstellt. Welchen Vorteil hat die Verwendung von SQLiteNetExtensions, wenn keine Fremdschlüssel wirklich erstellt werden?SQLite-Fremdschlüssel mit SQLite.Net-PCL erstellen
Möglicherweise sind Fremdschlüssel nicht erforderlich (später in der App, nachdem die Datenbank erstellt wurde), wenn mit LAMDA-Ausdrücken oder LINQ abgefragt wird. Wenn ich Abfragen ausgeführt habe, um Tabellen mit Fremdschlüsseln zu erstellen, ohne SQLite.Net-PCL zu verwenden, kann ich SQLite.Net-PCL weiterhin verwenden, um ObservableCollections an GridViews zu binden?
Beispiel Datenbank:
[Table("Book")]
public class Book
{
[PrimaryKey, AutoIncrement, Column("ID")]
public int ID { get; set; }
[Column("Name")]
public string Name { get; set; }
[ManyToMany]
public List<Checkout> Checkout { get; set; }
}
[Table("School")]
public class School
{
[PrimaryKey, AutoIncrement, Column("ID")]
public int ID { get; set; }
[Column("Name")]
public string Name { get; set; }
[OneToMany]
public List<Student> Student { get; set; }
[ManyToMany]
public List<Checkout> Checkout { get; set; }
}
[Table("Student")]
public class Student
{
[PrimaryKey, AutoIncrement, Column("ID")]
public int ID { get; set; }
[Column("SchoolID"), ForeignKey(typeof(School))]
public int SchoolID { get; set; }
[Column("Name")]
public string Name { get; set; }
[ManyToOne]
public School School { get; set; }
}
[Table("Checkout")]
public class Checkout
{
[PrimaryKey, AutoIncrement, Column("ID")]
public int ID { get; set; }
[Column("SchoolID"), ForeignKey(typeof(School))]
public int SchoolID { get; set; }
[Column("BookID"), ForeignKey(typeof(Book))]
public int BookID { get; set; }
}
SQLite ist neu für mich, und es gibt so viele SQLite Nuget Pakete zur Auswahl. Tutorials sind ein paar Jahre alt, also könnte es jetzt etwas Besseres geben. Danke im Voraus.
Aber Sie können Fremdschlüssel in SQLite v3.0 + richtig? Beispiel: conn.Execute ("PRAGMA foreign_keys = ON"); – detailCode
@detailCode, die tatsächliche Antwort sein sollte. SQLite unterstützt Fremdschlüssel, während im Standard deaktiviert sind ... – Tomas