Usuário com melhor resposta
Função Linq não retorna Lista

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.
- Editado Jean Carlos Galhardi terça-feira, 1 de setembro de 2015 23:28
Respostas
-
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.
- Marcado como Resposta Jean Carlos Galhardi sexta-feira, 4 de setembro de 2015 23:19
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.
-
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.
- Editado Jean Carlos Galhardi quarta-feira, 2 de setembro de 2015 23:14
-
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.
-
-
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.
- Editado Jean Carlos Galhardi quinta-feira, 3 de setembro de 2015 23:02
-
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.
- Marcado como Resposta Jean Carlos Galhardi sexta-feira, 4 de setembro de 2015 23:19