There is a similar issue with the same subject, only it's on LinqConnect (LINQ to SQL support). I had posted this there, but moved it.
I'm getting the same error in a similar situation. In my case I'm updating a record. I have no problems with inserts. This piece of code was working fine and I'm only getting this error since I upgraded from devart 6.3 to 7.5 (dot connect for Oracle).
The query does return the record sought.
Code: Select all
void ibtnApproveLine_Click(object sender, ImageClickEventArgs e)
{
try
{
using (SsinpatDataContext dc = new SsinpatDataContext())
{
string[] ids = ((ImageButton)sender).ID.Split('_');
decimal idOrcamento = decimal.Parse(ids[1].ToString());
decimal idAgregador = decimal.Parse(ids[2].ToString());
decimal idArtigo = decimal.Parse(ids[3].ToString());
EapSsArtigosOrcamento ao = dc.EapSsArtigosOrcamento.SingleOrDefault(x => x.IdAgregador == idAgregador
&& x.IdOrcamento == idOrcamento
&& x.IdArtigo == idArtigo);
ao.Aprovado = 1;
approveBlocksUpward(dc, idOrcamento, idAgregador, false);
dc.SubmitChanges(); // <<=== This is where the exception is thrown
EscreveDetalheOrcamento(dc);
}
}
catch (Exception exp)
{
log.Error(exp.Message);
log.Error(exp.InnerException);
throw exp;
}
}
Code: Select all
private void approveBlocksUpward(SsinpatDataContext dc, decimal idOrcamento, decimal idAgregador, bool flag = true)
{
try
{
//get the current block
var aos = from a in dc.EapSsAgregadoresOrcamento
where a.IdAgregador == idAgregador
&& a.IdOrcamento == idOrcamento
select a;
foreach (var ao in aos)
{
ao.Aprovado = 1;
if (ao.IdAgregadorPai != null)
{
approveBlocksUpward(dc, idOrcamento, ao.IdAgregadorPai, false);
}
}
}
catch (Exception exp)
{
log.Error(exp.Message);
log.Error(exp.InnerException);
throw exp;
}
}
Thanks for your help.