SQLiteNetExtension падает на реальном устройстве с момента обновления до VS 2019 - PullRequest
1 голос
/ 13 апреля 2019

Поскольку я обновил Visual Studio для Mac 2017 до 2019 года, я не могу запустить свое приложение Xamarin.iOS на своем реальном устройстве.

Я использую ту же базу данных, что и на симуляторе, но всегда получаю исключение OneToMany relationship destination must have Foreign Key to the origin class

Поскольку я обновился до VS 2019, мне пришлось изменить настройки сборки IOS (поведение компоновщика: ссылкавсе | снято с флажка включить инкрементные сборки).

Мой код не изменился, но произошел сбой при первом вызове БД на моем устройстве.

Пакеты Nuget: SQLiteNetExtensions 2.1.0 sqlite-net-pcl 1.5.231 sqlitePCLRAW.Core 1.1.13

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

Репозиторий:

        using (var db = ConnectionHelper.GetConn())
        {
            var resul = db.GetAllWithChildren<CompanyDataModel>().ToList();
            return resul;
        }

Ошибка: SQLiteNetExtensions.Exceptions.IncorrectRelationshipException было выдано

CompanyDataModel.Functions: у адресата отношения OneToMany должен быть внешний ключ к классу происхождения

Классы:

public class CompanyDataModel
{
    [PrimaryKey, AutoIncrement, Column("ID")]
    public long ID { get; set; }
    public string Name { get; set; }
    public ColorType ColorType { get; set; }
    [OneToMany(CascadeOperations = CascadeOperation.All)]
    public List<FunctionDataModel> Functions { get; set; }
    [OneToMany(CascadeOperations = CascadeOperation.All)]
    public List<LocationDataModel> Locations { get; set; }

    public CompanyDataModel()
    {
        Functions = new List<FunctionDataModel>();
        Locations = new List<LocationDataModel>();
    }
}


public class FunctionDataModel
{
    [PrimaryKey, AutoIncrement, Column("ID")]
    public long ID { get; set; }
    public string Name { get; set; }
    [ForeignKey(typeof(CompanyDataModel))]
    public long CompaniesID { get; set; }
    [ManyToOne]
    public CompanyDataModel Company { get; set; }
}

public class LocationDataModel
{
    [PrimaryKey, AutoIncrement, Column("ID")]
    public long ID { get; set; }
    public string Name { get; set; }
    [ForeignKey(typeof(CompanyDataModel))]
    public long CompaniesID { get; set; }
    [ManyToOne]
    public CompanyDataModel Company { get; set; }
}
...