我已经按照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; }