Операция InsertWithChildren не работает с SQLiteNetExtensions в мобильном приложении Xamarin (связь один ко многим) - PullRequest
0 голосов
/ 18 февраля 2020

Я занимаюсь разработкой приложения 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);
        }
    }
}

Когда я отлаживаю, я вижу, что у клиента, переданного в него, есть сайты, однако, когда я вытаскиваю того же клиента из базы данных, его сайты исчезают -

enter image description here

Сайты не вставляются в базу данных, но клиенты есть, и я не уверен, почему, любая помощь будет высоко ценится.

...