Я пытаюсь использовать расширение в MvvmCross 4. То, что я пытаюсь сделать, просто: у меня есть две таблицы с отношением один ко многим, и я хочу получить к ним доступ.
У меня есть два класса, BusLine
и BusLineGroup
. Каждая BusLine имеет одну группу в качестве внешнего ключа. Что я делаю в коде, так это запускаю простой 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; }
}
Две таблицы:
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. Таким образом, оба из этих двух используют один и тот же PCL.