3

MvvmCross 4 で拡張機能を使用しようとしています。私がやろうとしていることは単純です。1 対多の関係を持つ 2 つのテーブルがあり、これにアクセスしたいと考えています。

私は2つのクラスを持っていBusLineますBusLineGroup. 各 BusLine には、外部キーとして 1 つのグループがあります。私がコードで行っていることは、単純な LINQ クエリを実行してすべてのバスラインを取得することです。

var testQuery = 
    from busLine in this._connection.Table<BusLine>()
    select busLine;

クエリ自体は機能しますが、返されたオブジェクトのフィールドを確認すると、グループは常にnull! です。クラスとテーブルの定義については、以下を参照してください。

デバッグ ローカル

私は何を間違っていますか?なぜグループは常にnullですか?ご協力いただきありがとうございます。


コード内のクラス:

    public class BusLine
    {
        [PrimaryKey, AutoIncrement]
        public int Id { get; set; }
        public string Name { get; set; }
        [ForeignKey(typeof(BusLineGroup))]
        public int BusLineGroup { get; set; }
        [ManyToOne]
        public BusLineGroup LineGroup { get; set; }
    }

    public class BusLineGroup
    {
        [PrimaryKey, AutoIncrement]
        public int Id { get; set; }
        public string Name { get; set; }
        public string Color { get; set; }
        public string MainStations { get; set; }
        [OneToMany(CascadeOperations = CascadeOperation.All)]
        public List<BusLine> BusLines { get; set; }

    }

2 つのテーブル:

CREATE TABLE "BusLineGroup" (
    `Id`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    `Name`  TEXT NOT NULL,
    `Color` TEXT NOT NULL,
    `MainStations`  TEXT NOT NULL
);
CREATE TABLE "BusLine" (
    `Id`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    `Name`  TEXT NOT NULL,
    `BusLineGroup`  INTEGER NOT NULL,
    FOREIGN KEY(`BusLineGroup`) REFERENCES `BusLineGroup`(`Id`)
);

インストールされた Nuget パッケージ:

  • MvvmCross.Plugin.SQLitePCL
  • SQLiteNetExtensions

注: MvvmCross パッケージには、SQLite.Net-PCL が自動的に含まれます。したがって、これら 2 つの両方が同じ PCL を使用します。

4

1 に答える 1