我遵循了https://bitbucket.org/twincoders/sqlite-net-extensions中的示例,我的出现了一个非常奇怪的错误“System.ArgumentException:'System.Int32' 类型的对象无法转换为'System.String'类型’。”
public class AgendamentoMotorista
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public int IdAgendamento { get; set; }
public string DocumentoMotorista { get; set; }
[OneToMany(CascadeOperations = CascadeOperation.All)]
public List<AgendamentoAtivoConteinerDto> Conteineres { get; set; }
}
public class AgendamentoAtivoConteinerDto
{
[PrimaryKey, AutoIncrement]
public int Id2 { get; set; }
[ForeignKey(typeof(AgendamentoMotorista))]
public string Conteiner { get; set; }
public string PesoBruto { get; set; }
public string Imo { get; set; }
[ManyToOne]
public AgendamentoMotorista AgendamentoMotorista { get; set; }
}
这些是我正在使用的课程,我正在建立一种关系。
_conexao = new SQLiteConnection(config.Plataforma, System.IO.Path.Combine(config.DiretorioDb, "MotoristasAgendamento2.db3"));
_conexao.CreateTable<AgendamentoMotorista>();
_conexao.CreateTable<AgendamentoAtivoConteinerDto>();
}
public void InsertWithChildren(AgendamentoMotorista agendamento)
{
_conexao.InsertWithChildren(agendamento);
}
任何人都知道为什么会出现这个错误?当我也使用 UpdateWithChildren 时会发生这种情况。
编辑
我已经解决了这个问题,在 ForeignKey 我必须使用 Int 而不是字符串之后,修复在这里:
[PrimaryKey, AutoIncrement]
public int Id2 { get; set; }
[ForeignKey(typeof(AgendamentoMotorista))]
public int ConteinerId { get; set; }
public string Conteiner { get; set; }
public string PesoBruto { get; set; }
public string Imo { get; set; }
[ManyToOne]
public AgendamentoMotorista AgendamentoMotorista { get; set; }