3
respostas

Duvidas Update-Database

Boa Noite ! Na video aula 05 o instrutor pedir para Add-Migration "Cadastro" beleza isso esta sendo criado perfeitamente. Quando ele solicitar para atualizar o BD com o comando Update-database -verbose aparece essa mensagem :

insira seu código aqui
```System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'PedidoId', table 'CasaDoCodigo.dbo.ItensPedido'; column does not allow nulls. UPDATE fails.
The statement has been terminated.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite, String methodName)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, String executeMethod, IReadOnlyDictionary`2 parameterValues, Boolean closeConnection)
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
   at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands, IRelationalConnection connection)
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_1.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
ClientConnectionId:173259df-2dc8-48ce-b113-77b52d599cfd
Error Number:515,State:2,Class:16
Cannot insert the value NULL into column 'PedidoId', table 'CasaDoCodigo.dbo.ItensPedido'; column does not allow nulls. UPDATE fails.

insira seu código aqui ```

3 respostas

Olá Rodrigo,

me manda como está sua classe ItensPedido para eu dar uma olhada? Por algum motivo ele está tentando colocar a coluna de id como nula.

insira seu código aqui
insira seu código aqui
``````using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Runtime.Serialization;
using System.Threading.Tasks;

namespace CasaDoCodigo.Models
{

    public class ItemPedido : BaseModel
    {
        [DataMember]
        [Required] 
        public Pedido Pedido { get; private set; } 
        [DataMember]
        [Required]
        public Produto Produto { get; private set; }
        [DataMember]
        public int Quantidade { get; private set; }
        [DataMember]
        public decimal PrecoUnitario { get; private set; }
        [DataMember]
        public decimal Subtotal {

            get
            {
                return Quantidade * PrecoUnitario;
            }
        }

        public ItemPedido()
        {

        }


        public ItemPedido(int id, Pedido pedido, Produto produto,
            int quantidade) : this(pedido, produto, quantidade)
        {
            this.Id = id;
        }

        public ItemPedido(Pedido pedido, Produto produto,
            int quantidade)
        {
            this.Pedido = pedido;
            this.Produto = produto;
            this.Quantidade = quantidade;
            this.PrecoUnitario = produto.Preco;
        }

        public void AtualizaQuantidade(int quantidade) 
        {
            this.Quantidade = quantidade;
        }
    }
}
insira seu código aqui
insira seu código aqui

Olá Rodrigo,

você já tinha alguma registro na tabela de ItensPedido cadastrado no banco? Parece que na hora de rodar a migration e ele está tentando criar esta coluna e settar os parâmetros dos registros que já existiam como null. Porém a coluna não aceita null por ser Required. Se for o caso tente apagar estes registros antes de rodar a migration que deve funcionar.