Связи и каскадное удаление в SQLite-net
Я практикуюсь в создании мобильных приложений на Xamarin с локальной базой данных SQLite. Я создал две простенькие сущности хотелось бы наладить между ними связь и каскадное удаление. Каскадное удаление по итогу не работает как и связь по всей видимости. Полагаю беда еще в том что в список сотрудников у профессии не сохраняются почему то объекты класса Person. Возможна ли вообще налаживание связей таким образом на SQLite-net?
Используется библиотека SQLite-net, не путать с Entity Framework.
Вот я описал две сущности проставил атрибуты для связи и каскадного удаления
public class Person
{
[PrimaryKey, AutoIncrement,NotNull]
public int Id { get; set; }
[NotNull]
public string Fullname { get; set; }
[ForeignKey(typeof(Job))]
public int Idjob { get; set; }
[ManyToOne(CascadeOperations = CascadeOperation.CascadeRead)]
public Job Jobb { get; set; }
public string job
{
get
{
string s = App.HRDB.GetJobAsync().Result.ToArray().Where(p => p.Id == Idjob).FirstOrDefault().Name;
if (s == "")
return "";
return s;
}
}
}
Вот в этом методе я сохраняю нового сотрудника и записываю его в лист сотрудников в сущности job
private async void Save_Clicked(object sender, EventArgs e)
{
Person person = (Person)BindingContext;
if (person == null)
person = new Person() { Fullname = Fullname.Text };
Job job = jobs.Where(p => p.Name == CB.Items[CB.SelectedIndex]).FirstOrDefault();
person.Idjob = job.Id;
person.Jobb = job;
if (job.people == null)
job.people = new List<Person>();
job.people.Add(person);
if (!string.IsNullOrWhiteSpace(person.Fullname) && !string.IsNullOrWhiteSpace(person.Idjob.ToString()))
{
await App.HRDB.SavePersonAsync(person);
await App.HRDB.SaveJobAsync(job);
}
//Две точки что бы назад вернуться
await Shell.Current.GoToAsync("..");
}
Тут я сохраняю/обновляю сущность Job
public Task<int> SaveJobAsync(Job job)
{
if (job.Id == 0)
return db.InsertAsync(job);
return db.UpdateAsync(job);
}
Далее при загружая профессию из бд, лист сотрудников в нем оказывается всегда null.