嗨,我有这两个表(不确定它们是否写得正确)一个议程可以包含许多任务,我的问题是我如何编写在我的议程中添加/删除/加载我的任务的方法,我不确定这是如何工作的当你有一个外键?谢谢你。
Models 文件夹中的 Agenda.cs
[Table("Agenda")]
public class Agenda
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string Topic { get; set; }
public string Duration { get; set; }
public DateTime Date { get; set; }
[OneToMany(CascadeOperations = CascadeOperation.All)]
}
模型文件夹中的 Tasks.cs
[Table("Task")]
public class Tasks
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
[ForeignKey(typeof(Agenda))]
public string Name { get; set; }
public string Time { get; set; }
[ManyToOne]
public Agenda Agenda { get; set; }
}
Database 文件夹中的 AgendaDatabase.cs (我目前对 Agenda 表的所有操作)
public class AgendaDatabase
{
readonly SQLiteAsyncConnection database;
public AgendaDatabase(string dbPath)
{
database = new SQLiteAsyncConnection(dbPath);
database.CreateTableAsync<Agenda>().Wait();
}
// Get all agenda
public Task<List<Agenda>> GetAgendasAsync()
{
return database.Table<Agenda>().ToListAsync();
}
// Get specific agenda
public Task<Agenda> GetAgendaAsync(int id)
{
return database.Table<Agenda>()
.Where(i => i.ID == id)
.FirstOrDefaultAsync();
}
// Insert new agenda (save)
public Task<int> SaveAgendaAsync(Agenda agenda)
{
if (agenda.ID != 0)
{
return database.UpdateAsync(agenda);
}
else
{
return database.InsertAsync(agenda);
}
}
//Delete specific agenda
public Task<int> DeleteAgendaAsync(Agenda agenda)
{
return database.DeleteAsync(agenda);
}
public Task<int> AddAgendaAsync(Agenda agenda)
{
return database.InsertAsync(agenda);
}
}