none
Erro ao tentar buscar MVC 5 RRS feed

  • Pergunta

  • Toda vez que eu mando buscar acontece esse erro. An exception of type 'System.Data.Entity.Core.EntityCommandExecutionException' occurred in EntityFramework.SqlServer.dll but was not handled in user code

    Additional information: An error occurred while executing the command definition. See the inner exception for details.

    Meu controller de busca é esse

            private ViagensEntities db = new ViagensEntities();

            ~FretesController()
            {
                db.Dispose();
            }

            [HttpGet]
            public ActionResult Pesquisa()
            {
                return View();
            }

            [HttpPost]
            public ActionResult Pesquisa(string pesquisa)
            {
                return View(db.Frete.Where(x => x.valor.Contains(pesquisa)).OrderBy(x => x.valor));
            }

            // GET: Fretes
            public ActionResult Index()
            {
                var frete = db.Frete.Include(f => f.Caminhao).Include(f => f.Cidade).Include(f => f.Motorista).Include(f => f.ViagemDestino);
                return View(frete.ToList());
            }

    minha view 

     @using (Html.BeginForm())
            {
                <p>
                    Procura por Valor: @Html.TextBox("pesquisa")
                    <input type="submit" value="Pesquisar" class="btn btn-primary" />
                </p>
            }
            <table class="table">
                <tr>
                    <th>
                        @Html.DisplayNameFor(model => model.Caminhao.nome)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.Cidade.nome)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.Motorista.nome)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.ViagemDestino.nome)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.valor)
                    </th>
                    <th></th>
                </tr>

                @{ if (Model != null)
                    {

                        foreach (var item in Model)
                        {
                            <tr>
                                <td>
                                    @Html.DisplayFor(modelItem => item.Caminhao.nome) ele para a execução aqui!
                                </td>
                                <td>
                                    @Html.DisplayFor(modelItem => item.Cidade.nome)
                                </td>
                                <td>
                                    @Html.DisplayFor(modelItem => item.Motorista.nome)
                                </td>
                                <td>
                                    @Html.DisplayFor(modelItem => item.ViagemDestino.nome)
                                </td>
                                <td>
                                    @Html.DisplayFor(modelItem => item.valor)
                                </td>
                            </tr>
                        }
                    }
                }
            </table>
    quarta-feira, 22 de junho de 2016 13:42

Respostas

  • Olá Bruno Brandão da Silva,

    No seu exemplo está:

            [Key]
             [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
             [Display(Name = "ID")]
             public int Cidade_ID { get; set; }

    Não deveria ser como o exemplo dado por Leandro Tozetto?

            [Display(Name = "Cidade: ")]
            [ForeignKey("Cidade")]
            public int Cidade_ID { get; set; }
            public virtual Cidade Cidade { get; set; }


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    quinta-feira, 30 de junho de 2016 18:06
    Moderador
  • Sim

     [Display(Name = "Nome: ")] estava dando conflito com os outros, pois estava o mesmo nome.
    quarta-feira, 13 de julho de 2016 19:07

Todas as Respostas

  • Bom dia, Bruno!

    A string de conexão está correta?

    As suas tabelas estão idênticas as classes utilizadas no EF?


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    quarta-feira, 22 de junho de 2016 13:50
  • A conexão está correta, está tudo correto sim. Está parando a execução na primeiro FK que eu marquei logo acima
    quarta-feira, 22 de junho de 2016 13:52
  • Esse erro normalmente acontece quando há uma diferença no entre o banco e sua model, como nome de campos incorretos ou uma configuração de FK errada no EF.

    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    quarta-feira, 22 de junho de 2016 14:46
  • O meu codigo está logo a cima, da uma olhada ai pra você ver. Está a mesma coisa.
    quarta-feira, 22 de junho de 2016 16:26
  • Bruno,

    Eu vi o seu código, mas não vi as tabelas e seus respectivos campos, por isso mencionei o problema de divergência entre os campos.

    E como já vi casos com esse erro, o qual foi alterado nome de propriedade da classe e/ou coluna do banco, sem aplicar o Migrations para igualar o model e o banco, assim como erros na string de conexão.

    Você está usando EF com Code First? como foi feito o relacionamento entre as tabelas?



    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    quarta-feira, 22 de junho de 2016 17:13
  • Sim estou usando EF com code first. Fiz o proprio relacionamento na model. 

    meu model do frete 

        [Table("Frete")]
        public partial class Frete
        {
            public Frete()
            {

            }

            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            [Display(Name = "ID")]
            public int Frete_ID { get; set; }

            public int Cidade_ID { get; set; }
            [Display(Name = "Cidade: ")]
            [ForeignKey("Cidade_ID")]
            public virtual Cidade Cidade { get; set; }

            public int Caminhao_ID { get; set; }
            [Display(Name ="Caminhão: ")]
            [ForeignKey("Caminhao_ID")]
            public virtual Caminhao Caminhao { get; set; }

            public int ViagemDestino_ID { get; set; }
            [Display(Name ="Viagem: ")]
            [ForeignKey("ViagemDestino_ID")]
            public virtual ViagemDestino ViagemDestino { get; set; }

            public int Motorista_ID { get; set; }
            [Display(Name ="Motorista: ")]
            [ForeignKey("Motorista_ID")]
            public virtual Motorista Motorista { get; set; }

            [Display(Name = "Valor do frete: ")]
            [StringLength(20)]
            [Required(ErrorMessage = "Campo frete é obrigatorio")]
            public string valor { get; set; }

    liguei todas chave primarias nesse model, e deixei elas com fk

               
    quarta-feira, 22 de junho de 2016 17:17
  • Bruno,

    Muda a configuração das FKs para as propriedades de navegação, conforme abaixo:

            [System.ComponentModel.DataAnnotations.Key]        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            [Display(Name = "ID")]
            public int Frete_ID { get; set; }
    
            [Display(Name = "Cidade: ")]
            [ForeignKey("Cidade_ID")]
            public int Cidade_ID { get; set; }
            public virtual Cidade Cidade { get; set; }
    
            [Display(Name = "Caminhão: ")]
            [ForeignKey("Caminhao_ID")]
            public int Caminhao_ID { get; set; }
            public virtual Caminhao Caminhao { get; set; }
    
            [Display(Name = "Viagem: ")]
            [ForeignKey("ViagemDestino_ID")]
            public int ViagemDestino_ID { get; set; }
            public virtual ViagemDestino ViagemDestino { get; set; }
    
            [Display(Name = "Motorista: ")]
            [ForeignKey("Motorista_ID")]
            public int Motorista_ID { get; set; }
            public virtual Motorista Motorista { get; set; }
    
            [Display(Name = "Valor do frete: ")]
            [StringLength(20)]
            [Required(ErrorMessage = "Campo frete é obrigatorio")]
            public string valor { get; set; }


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    quarta-feira, 22 de junho de 2016 17:25
  • Cara olha o erro que deu.

    

        [Table("Cidades")]
        public partial class Cidade
        {
            public Cidade()
            {
                this.ViagemDestino = new HashSet<ViagemDestino>();
                this.Frete = new HashSet<Frete>();
            }

            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            [Display(Name = "ID")]
            public int Cidade_ID { get; set; }

            [Display(Name = "Nome: ")]
            [StringLength(50)]
            [Required(ErrorMessage = "Por favor, preencha o campo nome!")]
            public string nome { get; set; }

            [Display(Name = "UF: ")]
            [StringLength(2)]
            [Required(ErrorMessage = "Por favor, preencha o campo UF!")]
            public string uf { get; set; }

            public virtual ICollection<ViagemDestino> ViagemDestino { get; set; }
            public virtual ICollection<Frete> Frete { get; set; }

    meu model de Cidade

    quarta-feira, 22 de junho de 2016 17:36
  • Bruno,

    Tenta assim:

    [System.ComponentModel.DataAnnotations.Key]

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]

    [Display(Name = "ID")] public int Frete_ID { get; set; } [Display(Name = "Cidade: ")] [ForeignKey("Cidade")] public int Cidade_ID { get; set; } public virtual Cidade Cidade { get; set; } [Display(Name = "Caminhão: ")] [ForeignKey("Caminhao")] public int Caminhao_ID { get; set; } public virtual Caminhao Caminhao { get; set; } [Display(Name = "Viagem: ")] [ForeignKey("ViagemDestino")] public int ViagemDestino_ID { get; set; } public virtual ViagemDestino ViagemDestino { get; set; } [Display(Name = "Motorista: ")] [ForeignKey("Motorista")] public int Motorista_ID { get; set; } public virtual Motorista Motorista { get; set; } [Display(Name = "Valor do frete: ")] [StringLength(20)] [Required(ErrorMessage = "Campo frete é obrigatorio")] public string valor { get; set; }


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    quarta-feira, 22 de junho de 2016 19:22
  • Persistiu no mesmo erro cara
    quarta-feira, 22 de junho de 2016 19:31
  • Olá Bruno Brandão da Silva,

    No seu exemplo está:

            [Key]
             [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
             [Display(Name = "ID")]
             public int Cidade_ID { get; set; }

    Não deveria ser como o exemplo dado por Leandro Tozetto?

            [Display(Name = "Cidade: ")]
            [ForeignKey("Cidade")]
            public int Cidade_ID { get; set; }
            public virtual Cidade Cidade { get; set; }


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    quinta-feira, 30 de junho de 2016 18:06
    Moderador
  • Boa tarde,

    Por falta de retorno do usuário

    essa thread está sendo encerrada.

    Se o problema ainda estivar ocorrendo, favor abrir uma nova thread.

    Obrigado.


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 13 de julho de 2016 15:34
    Moderador
  • Meu amigo, consegui resolver. Porém se quiser remover pode remover.

    Obrigado, abraços!

    quarta-feira, 13 de julho de 2016 15:39
  • Boa tarde Bruno Brandão da Silva,

    Excelente. Você mesmo resolveu?

    Poderia por gentileza postar a solução?

    Obrigado,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 13 de julho de 2016 16:47
    Moderador
  • Sim

     [Display(Name = "Nome: ")] estava dando conflito com os outros, pois estava o mesmo nome.
    quarta-feira, 13 de julho de 2016 19:07