Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro durante o compilamento

Microsoft.EntityFrameworkCore.DbUpdateException
  HResult=0x80131500
  Message=An error occurred while updating the entries. See the inner exception for details.
  Source=Microsoft.EntityFrameworkCore.Relational
  StackTrace:
   at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection)
   at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.Execute(Tuple`2 parameters)
   at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](Func`2 operation, Func`2 verifySucceeded, TState state)
   at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, Func`2 operation, TState state)
   at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.Execute(IEnumerable`1 commandBatches, IRelationalConnection connection)
   at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChanges(IReadOnlyList`1 entries)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(IReadOnlyList`1 entriesToSave)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(Boolean acceptAllChangesOnSuccess)
   at Microsoft.EntityFrameworkCore.DbContext.SaveChanges(Boolean acceptAllChangesOnSuccess)
   at Microsoft.EntityFrameworkCore.DbContext.SaveChanges()
   at Alura.Loja.Testes.ConsoleApp.Program.Main(String[] args) in C:\Users\hackd\Desktop\Alura.Loja\Alura.Loja.Testes.ConsoleApp\Program.cs:line 34

  This exception was originally thrown at this call stack:
    [External Code]

Inner Exception 1:
SqlException: Cannot insert explicit value for identity column in table 'Produtos' when IDENTITY_INSERT is set to OFF.
5 respostas

Olá Victor, tudo certo?

Este erro é referente à tentativa de adicionar um valor de um ID em um campo que não pode ser adicionado, como por exemplo um campo de auto incremento.

Tem como compartilhar seu código via Dropbox, Google Drive ou Github, para que eu possa dar uma olhada?

No aguardo!

Opa tranquilo, Fabiano.

Desculpa a pergunta boba, mas como que eu posso fazer isso?

Você pode subir o projeto numa pasta do google drive e compartilhar o link da pasta, o mesmo com o Dropbox.

Quanto ao Github tem um curso mas pode ser um pouco demorado até comeaçar compartilhar a partir daqui.

Sugiro os dois primeiros métodos, principalmente porque se você tiver um email no Gmail, já tem acesso ao Google Drive.

solução!

Olá Victor, encontrei o problema no seu código. Tanto ao criar os objetos do tipo Produto e Compra está associando um valor para o Id dos dois objetos, mas o Id é responsabilidade do Entity preencher.

Comentei os dois campos Id e compilou:

var paoFrances = new Produto()
{
    Nome = "Pão Francês",
    //Id = 5, // não adicionar essa informação
    PrecoUnidade = 0.40,
    Categoria = "Padaria",
    Unidade = "unidade"
};

var compra = new Compra();
//compra.Id = 3; // não adicionar essa informação
compra.Quantidade = 10;
compra.Produto = paoFrances;
compra.Preco = paoFrances.PrecoUnidade * compra.Quantidade;

Bons estudos!