0
I am getting the following error while trying to perform Savechanges():
Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. See http://go.microsoft.com/fwlink/?LinkId=472540 for information on understanding and handling optimistic concurrency exceptions.
Code:
try
{
if (curriculumVitae.DataUltimaAtualizacao == null)
{
curriculumVitae.DataUltimaAtualizacao = DateTime.ParseExact(
String.Format("{0} {1}", cvXml.DATAATUALIZACAO, cvXml.HORAATUALIZACAO),
Utils.ParseDateFormat(cvXml.FORMATODATAATUALIZACAO) + " %Hmmss",
null
);
}
var professor = this.ProcurarProfessorPorNumeroCurriculo(curriculumVitae.NumeroCurriculo);
if (professor != null && professor.DataUltimaAtualizacaoCurriculo >= curriculumVitae.DataUltimaAtualizacao)
{
Logger.Info(String.Format(
"Currículo {0} do Professor {1} já esta na última versão.",
curriculumVitae.NumeroCurriculo,
curriculumVitae.NomeProfessor
));
return true;
}
ProcessarCache(cvXml);
if (professor != null)
{
RemoverDadosProfessor(professor);
}
else
{
// criar o professor
professor = LattesDatabase.Professor.Create();
criarProfessor = true;
}
// dados do curriculo
professor.NumeroCurriculo = curriculumVitae.NumeroCurriculo;
professor.LinkParaCurriculo = String.Format("http://lattes.cnpq.br/{0}", professor.NumeroCurriculo);
professor.DataUltimaAtualizacaoCurriculo = (DateTime)curriculumVitae.DataUltimaAtualizacao;
professor.DataUltimaPublicacaoCurriculo = new DateTime(1900, 1, 1); // data qualquer no passado
ProcessarDadosGerais(professor, cvXml);
ProcessarEnderecosEContatos(professor, cvXml);
ProcessarIdiomas(professor, cvXml);
ProcessarPremiosETitulos(professor, cvXml);
ProcessarFormacaoAcademicaETitulacao(professor, cvXml);
ProcessarAreasAtuacaoProfessor(professor, cvXml);
ProcessarProducoesTecnicasEPatentes(professor, cvXml);
ProcessarProducoesBibliograficas(professor, cvXml);
ProcessarParticipacaoEventos(professor, cvXml);
ProcessarOrientacoesESupervisoes(professor, cvXml);
ProcessarBancasDeTrabalho(professor, cvXml);
ProcessarBancasJulgadoras(professor, cvXml);
ProcessarAtuacoesProfissionaisEProjetos(professor, cvXml);
if (criarProfessor)
{
LattesDatabase.Professor.Add(professor);
}
LattesDatabase.SaveChanges();
CriarBaseDeConsulta(professor);
LattesDatabase.SaveChanges(); // salva base de consulta
return true;
}
Stack:
2019-05-06 14:40:38,448 [5] ERROR ProfessorDAOService - Exceção: Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. See http://go.microsoft.com/fwlink/?LinkId=472540 for information on understanding and handling optimistic concurrency exceptions.
em System.Data.Entity.Internal.InternalContext.SaveChanges()
em System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
em System.Data.Entity.DbContext.SaveChanges()
em LattesExtractor.DAO.ProfessorDAOService.ProcessCurriculumVitaeXML(CurriculoVitaeXml cvXml, CurriculoEntry curriculumVitae) na C:\Users\Unisc\source\ExtratorLattesCNPq\LattesExtractor\DAO\ProfessorDAOService.cs:linha 257
2019-05-06 14:40:38,448 [5] ERROR ProfessorDAOService - Exceção Interna [1]: Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. See http://go.microsoft.com/fwlink/?LinkId=472540 for information on understanding and handling optimistic concurrency exceptions.
em System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.ValidateRowsAffected(Int64 rowsAffected, UpdateCommand source)
em System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()
em System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.<Update>b__2(UpdateTranslator ut)
em System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update[T](T noChangesResult, Func`2 updateFunction)
em System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update()
em System.Data.Entity.Core.Objects.ObjectContext.<SaveChangesToStore>b__35()
em System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
em System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction)
em System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass2a.<SaveChangesInternal>b__27()
em System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation)
em System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions options, Boolean executeInExistingTransaction)
em System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options)
em System.Data.Entity.Internal.InternalContext.SaveChanges()
Some tables in the database are given insertions/updates, but those that are related to the Teacher table do not happen (if I enter manually in the Teacher table the id is defined as if they had records in the table, even if I have none)
Good afternoon, @Ander_. Just trying to understand, what is the need to write Lattesdatabase.Savechanges() 2x in the same block? If you save block changes: if (creatProfessor), you don’t need to, okay? Tries to invoke the Savechanges() method only at the end of the whole process.
– flaubert165