【问题标题】:Проблемы с сохранением списка сущностей в SQLlite-net C# [closed]Проблемы с сохранением списка сущностей в SQLlite-net C# [关闭]
【发布时间】:2022-06-18 00:12:51
【问题描述】:

Есть модели объектов которые хранятся в БД。

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;
}
}
}

public class Job
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
public int CountPlace { get; set; }

[OneToMany(CascadeOperations = CascadeOperation.CascadeDelete)]
public List<Person> people { get; set; }
}

При сохранении нового сотрудника по профессии я добавляю его в лист работы и вызываю метод сохранения работы:

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("..");
}

Метод сохранения:

public Task<int> SaveJobAsync(Job job)
{
if (job.Id == 0)
return db.InsertAsync(job);
return db.UpdateAsync(job);
}

Но при последующей подгрузке работ, лист сотрудников профессии равен null

【问题讨论】:

标签: c# sqlite


猜你喜欢
  • 2022-06-14
  • 2022-06-14
  • 2022-01-25
  • 1970-01-01
  • 2021-12-05
  • 2012-08-15
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多