CascadeOperation.Read не работает для дочернего дочернего элемента в SQLiteNetExtensions - PullRequest
0 голосов
/ 21 июня 2019

Работа над приложением с использованием SQLite-net-pcl и SQLiteNetExtensions, и у меня возникла проблема с получением данных из дочерней таблицы с использованием каскадного и рекурсивного. Я искал вокруг SO, но ни одно из предложений не работает. Любое понимание будет оценено.

Ниже приведены мои методы для таблиц:

using SQLite;
using SQLiteNetExtensions.Attributes;
using System;
using System.Collections.ObjectModel;

namespace ACNLTracker
{
    public class Daily
    {
        [PrimaryKey]
        public DateTime Date { get; set; }
        //Other data that doesn't pertain to this question

        [OneToMany(CascadeOperations = CascadeOperation.All)]
        public ObservableCollection<Resident> Residents { get; set; }
    }

    [Table("residents")]
    public class Resident
    {
        [PrimaryKey, AutoIncrement]
        public int ID { get; set; }
        public int ResidentID { get; set; }

        [ForeignKey(typeof(Villager))]
        public int VillagerID { get; set; }

        [ForeignKey(typeof(Daily))]
        public DateTime DailyDate { get; set; }

        [OneToOne(CascadeOperations = CascadeOperation.CascadeRead, ReadOnly = true)]
        public Villager Villager { get; set; }
    }

    [Table("Villagers")]
    public class Villager
    {
        [PrimaryKey]
        public int ID { get; set; }
        public string Name { get; set; }
        public string Species { get; set; }
        public int Gender { get; set; }
        public string Birthday { get; set; }
        public string Image { get; set; }
    }
}

У меня есть метод базы данных в App.XAML, который устанавливает данные. У меня есть пара звонков, чтобы получить данные

public Daily GetToday() => db.GetAllWithChildren<Daily>(recursive: true).Where(x => x.Date == DateTime.Today).FirstOrDefault();
public ObservableCollection<Resident> GetResidents() => db.GetAllWithChildren<Resident>(recursive: true).ToObservableCollection();

Если я позвоню

Daily daily = App.Database.GetToday();

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

Resident[] resident = App.Database.GetResidents();

Возвращает всех жителей, и таблица сельчан не является нулевой. Разве невозможно получить дочерние таблицы, используя этот метод?

...