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 を使用します。