ENTITY FRAMEWORK E INVALID COLUMN NAME

 Tópico anterior Próximo tópico Novo tópico

ENTITY FRAMEWORK E INVALID COLUMN NAME

ASP.NET

 Compartilhe  Compartilhe  Compartilhe
#490505 - 25/09/2019 11:32:43

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Bom dia pessoal, em um projeto MVC criei uma tabela []Categoria[] e outra []Servico[].
E as respectivas classes:

[Table([]Categoria[])]
    public partial class Categoria
    {
        [Key]
        public int Id { get; set; }

        [StringLength(50)]
        [DisplayName([]Descrio[])]
        public string Descricao { get; set; }
    }


[Table([]Servico[])]
    public partial class Servico
    {
        [Key]
        public int Id { get; set; }

        public int IdCategoria { get; set; }
        public virtual Categoria Categoria { get; set; }

        [Required]
        [StringLength(100)]
        [DisplayName([]Descrio[])]
        public string Descricao { get; set; }
    }
}


Minha Controller est assim:

public ActionResult Index()
    {
        return View(db.Servico.Where(x => x.IdCategoria == 1).ToList());
    }


S que quando vou rodar o projeto, me d um erro no browser:

Invalid column name []Categoria_Id[].
Descrio: Ocorreu uma exceo sem tratamento durante a execuo da atual solicitao da Web. Examine o rastreamento de pilha para obter mais informaes sobre o erro e onde foi originado no cdigo.
Detalhes da Exceo: System.Data.SqlClient.SqlException: Invalid column name []Categoria_Id[].
Erro de Origem:
Linha 23:         public ActionResult Index()
Linha 24:         {
Linha 25:             return View(db.Servico.Where(x => x.IdCategoria == 1).ToList());
Linha 26:         }


Por que isso ocorre e como eu fao para contornar esse erro?

____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

#490506 - 25/09/2019 11:44:06

FOXMAN
BARRETOS
Cadast. em:Janeiro/2001


Membro da equipe
Troque o nome CATEGORIA_ID para ID apenas....

O campo Categoria_id no existe na tabela, Veririque esse campo.


Grupo DotNet.Br no FaceBook

Grupo WhatsDev



#490507 - 25/09/2019 11:50:38

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Foxman obrigado pela resposta rpida, porm eu no posso trocar o nome da coluna pois j existe uma coluna Id que o id do servio.
Esse o problema: o nome do campo da tabela IdCategoria, nesta linha est especificado correto:
return View(db.Servico.Where(x => x.IdCategoria == 1).ToList());
Quero retornar todos os servios cujo Id da categoria seja 1;
S que a mensagem me diz que o nome do campo Categoria_Id invlido, ms de onde vem esse nome: Categoria_Id?

____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

#490512 - 25/09/2019 17:52:04

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Decore a propriedade com o nome correto do campo:

[Column([]Categoria_Id[])]
public int IdCategoria { get; set; }


O melhor mesmo seria usar mapeamentos de modo fluido.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#490514 - 26/09/2019 01:40:36

FOXMAN
BARRETOS
Cadast. em:Janeiro/2001


Membro da equipe
Citação:
:
S que a mensagem me diz que o nome do campo Categoria_Id invlido, ms de onde vem esse nome: Categoria_Id?

A resposta est na sua pergunta....
Esse campo est representado em algum local :
Ele jamais iria existir(na verdade, retornar essa mensagem se ele de fato no existisse).
Se vc  criou um relacionamento, cheque-o.
Verifique as chaves-estrangeiras, e se vc as declarou corretamente.

Possivelmente este erro est ligado ao relacionamento.





Grupo DotNet.Br no FaceBook

Grupo WhatsDev



#490515 - 26/09/2019 09:19:14

F001E
IBITINGA/SP
Cadast. em:Novembro/2004


 Anexos estao visíveis somente para usuários registrados

Essa base de dados sua ou de terceiro ? No esta nada normalizada.

Todos os ID que uso, eu mesclo com o nome da tabela para evitar isso que aconteceu com voc, de ter dois campos com nomes iguais



#490516 - 26/09/2019 09:21:03

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Bom dia, pessoal.
No sei se consigo explicar direito o meu problema, mas o seguinte:
Minha tabela Categoria tem os campos : Id - Descricao;
Minha tabela Servico tem os campos : Id - IdCategoria - Descricao;
Minha classe Categoria:
[Table([]Categoria[])]
    public partial class Categoria
    {
        [Key]
        public int Id { get; set; }

        [StringLength(50)]
        [DisplayName([]Descrio[])]
        public string Descricao { get; set; }
    }

Minha classe Servico:
[Table([]Servico[])]
    public partial class Servico
    {
        [Key]
        public int Id { get; set; }

        public int IdCategoria { get; set; }
        public virtual Categoria Categoria { get; set; }

        [Required]
        [StringLength(100)]
        [DisplayName([]Descrio[])]
        public string Descricao { get; set; }
    }
}

Ao tentar retornar na ActionResult os registros da tabela Servico onde o Id da Categoria seja = 1;
public ActionResult Index()
    {
        return View(db.Servico.Where(x => x.IdCategoria == 1).ToList());
    }

Retorna esse erro mencionado acima, ou seja, parece que o SqlServer entende que na linha []public virtual Categoria Categoria[] estou informando um outro campo da tabela e da ele exibe a mensagem que o campo Categoria_Id no vlido, pois eu coloquei essa linha em comentrio e no exibiu mais esse erro.
Gostaria de saber como fao para resolver esse erro, pois quando eu for exibir os registros na minha View, vou precisar exibir a descrio da categoria dessa forma:
@Html.DisplayFor(modelItem => item.Categoria.Descricao)

No sei se importa mas estou usando o VS 2019, Entity Framework e Banco de Dados Sql Server, sendo o banco de dados local (.mdf).

____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

#490518 - 26/09/2019 10:25:50

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Voc no est usando migrations?

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#490519 - 26/09/2019 11:02:00

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


No.


____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

#490520 - 26/09/2019 11:27:30

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Deveria, facilita MUITO as coisas.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#490522 - 26/09/2019 15:47:20

CLEVERTON
SERRINHA
Cadast. em:Dezembro/2003


Membro da equipe
Voc tambm pode mapear pelo FLUENT API.

Eu particularmente acho mais fcil, alm de deixar as classes mais desacopladas.



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por PERCIFILHO em 28/09/2019 14:36:56