1
resposta

System.ArgumentNullException: 'Value cannot be null.

Boa tarde.

Eu segui passo a passo as lições e ao rodar o programa, ele apresenta uma exceção sem tratamento, apontando exatamente para o Método SaveProduto, apontando a excessão para a condição IF desse método.:

        public void SaveProdutos(List<Livro> livros)
        {
            foreach (var livro in livros)
            {
                if (!dbSets.Where(p => p.Codigo == livro.Codigo).Any())
                {
                    dbSets.Add(new Produto(livro.Codigo, livro.Nome, livro.Preco));
                }
            } 
            contexto.SaveChanges();
        }

No Chrome, é exibido o seguinte erro:

System.Linq.Queryable.Where<TSource>(IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate)

ArgumentNullException: Value cannot be null. Parameter name: source
System.Linq.Queryable.Where<TSource>(IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate)
CasaDoCodigo.Repositories.ProdutoRepository.SaveProdutos(List<Livro> livros) in ProdutoRepository.cs
+
if (!dbSets.Where(p => p.Codigo == livro.Codigo).Any())
CasaDoCodigo.Startup+DataService.InicializaDB() in DataService.cs
-
public void InicializaDB()
{
contexto.Database.EnsureCreated();
System.Linq.Queryable.Where<TSource>(IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate)

ArgumentNullException: Value cannot be null. Parameter name: source
System.Linq.Queryable.Where<TSource>(IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate)
CasaDoCodigo.Repositories.ProdutoRepository.SaveProdutos(List<Livro> livros) in ProdutoRepository.cs
+
}
public void SaveProdutos(List<Livro> livros)
{
foreach (var livro in livros)
{
if (!dbSets.Where(p => p.Codigo == livro.Codigo).Any())
{
dbSets.Add(new Produto(livro.Codigo, livro.Nome, livro.Preco));
}
} 
contexto.SaveChanges();
}
CasaDoCodigo.Startup+DataService.InicializaDB() in DataService.cs
+
public void InicializaDB()
{
contexto.Database.EnsureCreated();
List<Livro> livros = GetLivros();
produtoRepository.SaveProdutos(livros);
}
private static List<Livro> GetLivros()
{
CasaDoCodigo.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider) in Startup.cs
+
{
routes.MapRoute(
name: "default",
template: "{controller=Pedido}/{action=Carrossel}/{id?}");
});
serviceProvider.GetService<IDataService>().InicializaDB();
}
}
}
}
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app)
Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()

Alguem poderia me dar uma luz do que poderia estar acontecendo?

1 resposta

Olá marcosmazo, tudo bem?

Percebi que está utilizando a variável chamada dbSets no plural. Este nome está correto? Caso esteja, tem como compartilhar seu código via Dropbox, Google Drive ou Github, para que eu possa dar uma olhada?

No aguardo!