Usuário com melhor resposta
Erro ao tentar buscar MVC 5

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>
Respostas
-
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.
- Editado Robson William SilvaModerator quinta-feira, 30 de junho de 2016 18:07
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 13 de julho de 2016 15:32
-
Sim
o
[Display(Name = "Nome: ")] estava dando conflito com os outros, pois estava o mesmo nome.
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 13 de julho de 2016 19:36
Todas as Respostas
-
-
-
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,
LeandroSe foi útil, marque como útil ou como resposta.
- Marcado como Resposta Bruno Brandão da Silva quarta-feira, 22 de junho de 2016 16:25
- Não Marcado como Resposta Bruno Brandão da Silva quarta-feira, 22 de junho de 2016 16:25
-
-
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,
LeandroSe foi útil, marque como útil ou como resposta.
-
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
- Editado Bruno Brandão da Silva quarta-feira, 22 de junho de 2016 17:18
-
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,
LeandroSe foi útil, marque como útil ou como resposta.
-
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
- Editado Bruno Brandão da Silva quarta-feira, 22 de junho de 2016 17:41
-
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,
LeandroSe foi útil, marque como útil ou como resposta.
-
-
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.
- Editado Robson William SilvaModerator quinta-feira, 30 de junho de 2016 18:07
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 13 de julho de 2016 15:32
-
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.
-
-
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.
-
Sim
o
[Display(Name = "Nome: ")] estava dando conflito com os outros, pois estava o mesmo nome.
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 13 de julho de 2016 19:36