none
Função Linq não retorna Lista RRS feed

  • Pergunta

  • Boa Noite, Tenho uma aplicação e ela não retorna uma lista que faço SELECT via Linq-to-Sql

    O erro pode está no SELECT que o linq-to-sql está fazendo.

    SELECT
    [Extent1].[Codigo] AS [Codigo], 
    [Extent1].[NomeFantasia] AS [NomeFantasia], 
    [Extent1].[RazaoSocial] AS [RazaoSocial], 
    [Extent1].[IE] AS [IE], 
    [Extent1].[CNPJ] AS [CNPJ], 
    [Extent1].[Ativo] AS [Ativo], 
    [Extent1].[Fornecedor_Codigo] AS [Fornecedor_Codigo] 
    FROM [dbo].[Fornecedors] AS [Extent1]


    Repare na minha ultima linha de código minha table chama Fornecedor e não Fornecedors. Ele deve estar fazendo a pluralização via Entity Framework.

    Model:

    public partial class Fornecedor
        {
            
            public Fornecedor()
            {
                this.Entrada = new HashSet<Entrada>();
                this.Produto = new HashSet<Produto>();
            }
           
            [Key]
            public int Codigo { get; set; }
    
            [Required(ErrorMessage="Nome fantasia é obrigatório", AllowEmptyStrings=false)]
            public string NomeFantasia { get; set; }
    
            [Required(ErrorMessage = "Razão Social é obrigatório", AllowEmptyStrings = false)]
            public string RazaoSocial { get; set; }
    
            [Required(ErrorMessage = "Inscrição Estadual é obrigatório", AllowEmptyStrings = false)]
            public string IE { get; set; }
    
            [Required(ErrorMessage = "CNPJ é obrigatório", AllowEmptyStrings = false)]
            public string CNPJ { get; set; }
    
            public Nullable<bool> Ativo { get; set; }
    
            
            public virtual ICollection<Entrada> Entrada { get; set; }
            public virtual ICollection<Produto> Produto { get; set; }
    
            public virtual ICollection<Fornecedor> CollectionFornecedores { get; set; }
        }

    Meu Context:

     public class SistemaContext : DbContext
        {
            public DbSet<Cliente> Clientes { get; set; }
            public DbSet<Fornecedor> Fornecedores { get; set; }
        }
    Meu Controller:
     public ActionResult Index()
     {
        return View(db.Fornecedores.Where(s => s.Ativo == true).ToList());
     }



    Alguém pode me ajudar?


    Por favor, lembre-se de “Marcar como Resposta” as respostas 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.


    terça-feira, 1 de setembro de 2015 23:25

Respostas

Todas as Respostas

  •  public class SistemaContext : DbContext
        {
            public DbSet<Cliente> Clientes { get; set; }
            public DbSet<Fornecedor> Fornecedores { get; set; }
    
             protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
                modelBuilder.Entity<Clientes>().ToTable("Clientes ");
                modelBuilder.Entity<Fornecedores>().ToTable("Fornecedores");
            }
    
        }

    .ToTable("Clientes "); => Associa a classe a uma table no caso a classe clientes com a tabela clientes

    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>() => remove a

    pluralização automatica.

    Ou você pode fazer dessa forma


    [Table("Fornecedor")]
    public partial class Fornecedor
        {
            
            public Fornecedor()
            {
                this.Entrada = new HashSet<Entrada>();
                this.Produto = new HashSet<Produto>();
            }
           
            [Key]
            public int Codigo { get; set; }
    
            [Required(ErrorMessage="Nome fantasia é obrigatório", AllowEmptyStrings=false)]
            public string NomeFantasia { get; set; }
    
            [Required(ErrorMessage = "Razão Social é obrigatório", AllowEmptyStrings = false)]
            public string RazaoSocial { get; set; }
    
            [Required(ErrorMessage = "Inscrição Estadual é obrigatório", AllowEmptyStrings = false)]
            public string IE { get; set; }
    
            [Required(ErrorMessage = "CNPJ é obrigatório", AllowEmptyStrings = false)]
            public string CNPJ { get; set; }
    
            public Nullable<bool> Ativo { get; set; }
    
            
            public virtual ICollection<Entrada> Entrada { get; set; }
            public virtual ICollection<Produto> Produto { get; set; }
    
            public virtual ICollection<Fornecedor> CollectionFornecedores { get; set; }
        }
    Meu Context:
    
     public class SistemaContext : DbContext
        {
            public DbSet<Cliente> Clientes { get; set; }
            public DbSet<Fornecedor> Fornecedores { get; set; }
        }

    Depois disso add-migrations no package menager console


    __________________________________________________________________________________________________________ Atenciosamente, Mike Rodrigues De Lima.

    quarta-feira, 2 de setembro de 2015 11:36
  • Obrigado pela ajuda!

    Eu já tinha tentado essas opções, porém aparece um erro!

    The model backing the 'SistemaContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).

    Não consegui resolver esse erro.

    Como faço para add-migrations no package menager console?


    Por favor, lembre-se de “Marcar como Resposta” as respostas 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, 2 de setembro de 2015 22:58
  • http://www.asp.net/mvc/overview/older-versions/getting-started-with-aspnet-mvc4/adding-a-new-field-to-the-movie-model-and-table

    __________________________________________________________________________________________________________ Atenciosamente, Mike Rodrigues De Lima.

    quinta-feira, 3 de setembro de 2015 02:22
  • Jean Carlos,

    Criou seu contexto usando a estratégia Code First Certo ???



    Diego Almeida Barreto
    System Analyst / Software Developer

    quinta-feira, 3 de setembro de 2015 03:07
  • Na verdade não, acredito que por eu usar alguns DataAnnotations no model ele interpreta como se eu estivesse usando Code First.

    Não quero usar os DataAnnotations, mas se eu não uso o [Key] nas minhas chaves primárias dá erro.

    Por favor, lembre-se de “Marcar como Resposta” as respostas 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, 3 de setembro de 2015 22:28
  • Consegui resolver meu problema nesse fórum. 

    http://pt.stackoverflow.com/questions/84268/fun%C3%A7%C3%A3o-linq-n%C3%A3o-retorna-lista

    Muito Obrigado a todos pela ajuda.


    Por favor, lembre-se de “Marcar como Resposta” as respostas 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.

    sexta-feira, 4 de setembro de 2015 23:18