Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Vídeo aula 03 não criar BD

Boa noite ! Estou na aula video 3 assim que fiz o download do projeto apareceu uma msg dizendo Sql server tem que ser 2012 não existe essa versão para windows 10. A versão Visual studio 2017 e Sql server 2017 o banco de dados do entity não esta sendo criado, espero que me ajudem, segue a msg:

Erro de Servidor no Aplicativo '/'.

Referência de objeto não definida para uma instância de um objeto.

Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

Detalhes da Exceção: System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.

Erro de Origem: 


Linha 22:             </thead>
Linha 23:             <tbody>
Linha 24:                 @foreach (var produto in ViewBag.Produtos)
Linha 25:                 {
Linha 26:                     <tr>

Arquivo de Origem: c:\Users\rodri\source\repos\CaelumEstoque\CaelumEstoque\Views\Home\Index.cshtml    Linha: 24 

Rastreamento de Pilha: 


[NullReferenceException: Referência de objeto não definida para uma instância de um objeto.]
   ASP._Page_Views_Home_Index_cshtml.Execute() in c:\Users\rodri\source\repos\CaelumEstoque\CaelumEstoque\Views\Home\Index.cshtml:24
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +198
   System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +104
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +78
   System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +235
   System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +107
   System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +291
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +52
   System.Web.Mvc.Async.<>c__DisplayClass28.<BeginInvokeAction>b__19() +173
   System.Web.Mvc.Async.<>c__DisplayClass1e.<BeginInvokeAction>b__1b(IAsyncResult asyncResult) +100
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
   System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
   System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(IAsyncResult asyncResult, ProcessRequestState innerState) +21
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9987157
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.7.2110.0
4 respostas

Olá, Rodrigo.

Como que está a sua ProdutosController? O NullReferenceException pode ser por não ter colocado nada na ViewBag ou na propriedade Produtos dentro da ViewBag.

Erro de Servidor no Aplicativo '/'.

O sistema não pode encontrar o arquivo especificado

Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

Detalhes da Exceção: System.ComponentModel.Win32Exception: O sistema não pode encontrar o arquivo especificado

Erro de Origem: 


Linha 22:             using (var contexto = new EstoqueContext())
Linha 23:             {
Linha 24:                 return contexto.Produtos.Include("Categoria").ToList();
Linha 25:             }
Linha 26:         }

Arquivo de Origem: C:\Users\rodri\Desktop\CaelumEstoque\CaelumEstoque\DAO\ProdutosDAO.cs    Linha: 24 

Rastreamento de Pilha:

ProdutoController:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CaelumEstoque.DAO;
using CaelumEstoque.Models;

namespace CaelumEstoque.Controllers
{
    public class ProdutoController : Controller
    {
        // GET: Produto
        public ActionResult Index()
        {
            ProdutosDAO dao = new ProdutosDAO();
            IList<Produto> produtos = dao.Lista();
            ViewBag.Produtos = produtos;
            return View();
        }
    }
}

Index.cshtml:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div> 
        <table>

            <thead>
                <tr>
                    <th>Id</th>
                    <th>Nome</th>
                    <th>Quantidade</th>
                </tr>
            </thead>
            <tbody>
                    @foreach(var produto in ViewBag.Produtos){

                <tr>
                    <td>@produto.Id</td>
                    <td>@produto.Nome</td>
                    <td>@produto.Quantidade</td>
                </tr>

                }
            </tbody>
        </table>
    </div>
</body>
</html>

Olá, Rodrigo!

Desculpe a demora. Eu estava instalando o Visual Studio 2017 Community na minha máquina para testar o projeto e consegui reproduzir seus problemas. Vou dividir os problemas em partes.

Atualizar o banco de dados

A primeira coisa que aconteceu foi que, ao carregar o projeto no Visual Studio ele dá a mensagem dizendo que o banco de dados é antigo e precisa ser atualizado.

Para corrigir isso foi fácil. Basta abrir o arquivo DBEstoque.mdf clicando duas vezes. Irá aparecer um erro dizendo que o valor do datasource está errado (antigo) e precisa ser atualizado.

Para fazer isso abra a aba Server Explorer clique com o botão direito em cima de EstoqueContext e selecione Modify Connection. Aparecerá uma pop-up. Clique no botão Advanced... e mude o valor do Data Source de (LocalDB)\v11.0 para (LocalDB)\MSSQLLocalDB.

Clique em OK para fechar a janela Advanced e em OK de novo. Uma nova mensagem irá aparecer perguntando se quer atualizar o arquivo do banco de dados para a versão mais recente. Clique em Sim para continuar.

Feito isso, o banco está corrigido.

Microsoft.Web.Infrastructure

Quando você executa o projeto depois de corrigir o banco de dados aparece o seguinte erro logo que carrega:

Detalhes da Exceção: System.IO.FileNotFoundException: Não foi possível carregar arquivo ou assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' ou uma de suas dependências. O sistema não pode encontrar o arquivo especificado.

Para corrigir esse erro, é necessário instalar esse Microsoft.Web.Infrastructure. Para isso, volte no Visual Studio e dê stop no projeto se ainda estiver rodando.

Vá em Tools > NuGet Package Manager > Package Manager Console

Isso irá exibir o console gerenciador de pacotes do Visual Studio. Nele você vai digitar o seguinte comando para instalar:

Install-Package Microsoft.Web.Infrastructure

Dê enter e aguarde o término da instalação. Pronto. Outro problema resolvido.

Mas, quando você tenta acessar a página de produtos, há outro problema.

Atualizar Web.config

Quando você tenta acessar a Index de Produto, ele fica muito tempo carregando até que dá um erro na linha 24 da classe ProdutoDAO.cs:

return contexto.Produtos.Include("Categoria").ToList();

Isso porque o data source que está configurado para o Entity Framework está antigo! Você corrigiu o do arquivo de banco de dados, mas falta corrigir do Entity Framework!

Ele está no arquivo Web.config. Atenção! É o arquivo Web.config com W maiúsculo que está na raiz do projeto. Não confundir com o arquivo web.config (minúsculo) na pasta Views.

Modifique a linha...

connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|DBEstoque.mdf;Integrated Security=True"

... para ...

connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|DBEstoque.mdf;Integrated Security=True"

Salve o arquivo e execute o projeto novamente. Pronto, a listagem de produtos está funcionando e seu projeto foi atualizado completamente para a versão 2017.

Qualquer dúvida é só falar!

solução!

Boa noite !

Conforme a orientação eu mudei o valor do Data Source de (LocalDB)\v11.0 para (LocalDB)\MSSQLLocalDB é confirmei com OK. Ápos eu tentar a segunda confirmação OK emitiu essa msg : O valor da fonte de dados na cadeia de conexão especificada uma instância do SQL SERVER que não esta instalada. Para resolver esse problema modificar a fonte de dados na cadeia de conexão.

Instalei o Sql server 2012 para teste por enquanto esta tudo funcionado. Mas se haver atualizações fico no aguardo. Agradeço !