Tenho vários clientes cadastrados no banco, fiz um método no ClienteDAO para consultar os clientes, depois fiz o método no ClienteController para renderizar para a view, ele para no foreach da view.
System.NullReferenceException não foi manipulada pelo código do usuário
HResult=-2147467261
Message=Referência de objeto não definida para uma instância de um objeto.
Source=App_Web_2mm1skrf
StackTrace:
em ASP._Page_Views_cliente_Index_cshtml.Execute() na d:\OCW\SistemaOCW\SistemaOCW\Views\Cliente\Index.cshtml:linha 15
em System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
em System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
em System.Web.WebPages.StartPage.RunPage()
em System.Web.WebPages.StartPage.ExecutePageHierarchy()
em System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
em System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
em System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
em System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
em System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
em System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19()
em System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
InnerException:
using SistemaOCW.Entidade;
using System;
using System.Collections.Generic;
using System.EnterpriseServices;
using System.Linq;
using System.Web;
using SistemaOCW.Infra;
using NHibernate;
namespace SistemaOCW.DAO
{
public class ClienteDAO
{
private ISession session;
public ClienteDAO(ISession session)
{
this.session = session;
}
public void Adiciona(Cliente cliente)
{
NHibernate.ITransaction transacao = session.BeginTransaction();
session.Save(cliente);
transacao.Commit();
}
public IList<Cliente> List() {
NHibernate.ITransaction transacao = session.BeginTransaction();
IQuery query = session.CreateQuery("from Cliente");
IList<Cliente> clientes = query.List <Cliente>();
return clientes;
}
}
// public Cliente BuscaPorId(int id)
// {
// return session.Get<Cliente>(id);
// }
}
namespace SistemaOCW.Controllers
{
public class ClienteController : Controller
{
public ActionResult Form()
{
{
return View();
}
}
//
// GET: /Cliente/
public ActionResult Index()
{
ISession session = NHibernateHelper.AbreSession();
ClienteDAO dao = new ClienteDAO(session);
IList<Cliente> clientes = dao.List();
return View("index");
}
public ActionResult Adiciona(Cliente cliente)
{
ISession session = NHibernateHelper.AbreSession();
ClienteDAO dao = new ClienteDAO(session);
dao.Adiciona(cliente);
session.Close();
return RedirectToAction("Index");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace SistemaOCW.Entidade
{
public class Cliente
{
public virtual int Id { get; set; }
public virtual int Codcliente { get; set; }
public virtual string Nome { get; set; }
public virtual string Cnpj { get; set; }
public virtual string Endereco { get; set; }
public virtual string Bairro { get; set; }
public virtual string Cidade { get; set; }
public virtual string Cep { get; set; }
public virtual string Telefone { get; set; }
public virtual string Email { get; set; }
public virtual string Contato { get; set; }
public virtual Empresa empresa { get; set; }
}
}
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="SistemaOCW"
namespace="SistemaOCW.Entidade">
<class name ="Cliente">
<id name ="Id">
<generator class ="identity"/>
</id>
<property name="Codcliente"/>
<property name="Nome"/>
<property name="Cnpj"/>
<property name="Endereco"/>
<property name="Bairro"/>
<property name="Cidade"/>
<property name="Cep"/>
<property name="Telefone"/>
<property name="Email"/>
<property name="Contato"/>
<many-to-one name="empresa" column="EmpresaId" class = "Empresa"/>
</class>
</hibernate-mapping>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<table>
<thead>
<tr>
<th>Id</th>
<th>Nome do Cliente</th>
</tr>
</thead>
<tbody>
@foreach (var cliente in Model)
{
<tr>
<td>@cliente.Id</td>
<td>@cliente.Nome</td>
</tr>
}
</tbody>
</table>