Поскольку я обновил 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; }
}