Я занимаюсь разработкой приложения Xamarin Forms и пытаюсь вставить в 2 локальные таблицы Sqlite отношение «один ко многим» с помощью метода SQLiteNetExtensions InsertWithChildren, но, похоже, оно не работает; родительский класс - Клиент, а дочерний класс - Сайт. Клиенты заходят без проблем, а Сайты - нет. Ниже приведены инструкции по настройке классов:
public class Client
{
public Client()
{
Name = "";
Sites = new List<Site>();
}
[PrimaryKey][AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
[OneToMany]
public List<Site> Sites { get; set; }
}
и
public class Site
{
[PrimaryKey][AutoIncrement]
public int Id { get; set; }
[ForeignKey(typeof(Client))]
public int ClientId { get; set; }
public string Name { get; set; }
[ManyToOne]
public Client Client { get; set; }
}
Моя служба баз данных имеет следующий метод для добавления клиента в базу данных, который принимает объект Client, с заполненным списком сайтов -
public class ClientDatabaseService
{
static object locker = new object();
SQLiteConnection database;
public ClientDatabaseService()
{
// Makes calls to client specific code to create connection to db
database = DependencyService.Get<ISQLite>().GetConnection();
database.CreateTable<Client>();
database.CreateTable<Site>();
}
// Adds client to db
public void AddClient(Client client)
{
lock(locker)
{
database.InsertWithChildren(client);
var test = database.GetWithChildren<Client>(client.Id);
}
}
}
Когда я отлаживаю, я вижу, что у клиента, переданного в него, есть сайты, однако, когда я вытаскиваю того же клиента из базы данных, его сайты исчезают -
Сайты не вставляются в базу данных, но клиенты есть, и я не уверен, почему, любая помощь будет высоко ценится.