Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Gravar dados no banco vindo do form na aplicação web

Criei a classe DAO na minha aplicação seguindo os exemplos, depois criei a classe Clientecotroller como abaixo, e quando executo o programa, vou ate o formulário digito algum nome para gravar no banco da esse erro parece que é na session que vem null.

namespace SistemaOCW.Controllers
{
    public class ClienteController : Controller
    {  

           public ActionResult Form()
        {
            return View();
        }
        //
        // GET: /Cliente/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Adiciona(Cliente cliente)
        {
            ISession session = NHibernateHelper.AbreSession();
            ClienteDAO clienteDao = new ClienteDAO(session);
            Cliente novoCliente = new Cliente();


            clienteDao.Adiciona(novoCliente);
            session.Close();
            return RedirectToAction("Index");
        }

    }
}
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 Cliente BuscaPorId(int id)
        //  {
        //  return session.Get<Cliente>(id);
        //  }
    }
}
System.TypeInitializationException não foi manipulada pelo código do usuário
  HResult=-2146233036
  Message=O inicializador de tipo de 'SistemaOCW.Infra.NHibernateHelper' acionou uma exceção.
  Source=SistemaOCW
  TypeName=SistemaOCW.Infra.NHibernateHelper
  StackTrace:
       em SistemaOCW.Infra.NHibernateHelper.AbreSession()
       em SistemaOCW.Controllers.ClienteController.Adiciona(Cliente cliente) na d:\OCW\SistemaOCW\SistemaOCW\Controllers\ClienteController.cs:linha 31
       em lambda_method(Closure , ControllerBase , Object[] )
       em System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
       em System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
       em System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
       em System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
       em System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
  InnerException: NHibernate.Cfg.HibernateConfigException
       HResult=-2146232832
       Message=An exception occurred during configuration of persistence layer.
       Source=NHibernate
       StackTrace:
            em NHibernate.Cfg.ConfigurationSchema.HibernateConfiguration..ctor(XmlReader hbConfigurationReader, Boolean fromAppSetting)
            em NHibernate.Cfg.ConfigurationSchema.HibernateConfiguration..ctor(XmlReader hbConfigurationReader)
            em NHibernate.Cfg.Configuration.Configure(XmlReader textReader)
            em NHibernate.Cfg.Configuration.Configure(String fileName, Boolean ignoreSessionFactoryConfig)
            em NHibernate.Cfg.Configuration.Configure(String fileName)
            em NHibernate.Cfg.Configuration.Configure()
            em SistemaOCW.Infra.NHibernateHelper.RecuperaConfiguracao() na d:\OCW\SistemaOCW\SistemaOCW\Infra\NHibernateHelper.cs:linha 18
            em SistemaOCW.Infra.NHibernateHelper..cctor() na d:\OCW\SistemaOCW\SistemaOCW\Infra\NHibernateHelper.cs:linha 13
       InnerException: System.IO.FileNotFoundException
            HResult=-2147024894
            Message=Não foi possível localizar o arquivo 'd:\OCW\SistemaOCW\SistemaOCW\bin\hibernate.cfg.xml'.
            Source=mscorlib
            FileName=d:\OCW\SistemaOCW\SistemaOCW\bin\hibernate.cfg.xml
            StackTrace:
                 em System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
                 em System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
                 em System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
                 em System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy)
                 em System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
                 em System.Xml.XmlTextReaderImpl.OpenUrlDelegate(Object xmlResolver)
                 em System.Threading.CompressedStack.runTryCode(Object userData)
                 em System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
                 em System.Threading.CompressedStack.Run(CompressedStack compressedStack, ContextCallback callback, Object state)
                 em System.Xml.XmlTextReaderImpl.OpenUrl()
                 em System.Xml.XmlTextReaderImpl.Read()
                 em System.Xml.XmlTextReader.Read()
                 em System.Xml.XmlCharCheckingReader.Read()
                 em System.Xml.XsdValidatingReader.Read()
                 em System.Xml.XPath.XPathDocument.LoadFromReader(XmlReader reader, XmlSpace space)
                 em System.Xml.XPath.XPathDocument..ctor(XmlReader reader, XmlSpace space)
                 em System.Xml.XPath.XPathDocument..ctor(XmlReader reader)
                 em NHibernate.Cfg.ConfigurationSchema.HibernateConfiguration..ctor(XmlReader hbConfigurationReader, Boolean fromAppSetting)
            InnerException:
1 resposta
solução!

Oi Leonardo

O problema é que o NHibernate não encontrou o arquivo hibernate.cfg.xml (Essa é a parte relevante da stack trace):

InnerException: System.IO.FileNotFoundException
            HResult=-2147024894
            Message=Não foi possível localizar o arquivo 'd:\OCW\SistemaOCW\SistemaOCW\bin\hibernate.cfg.xml'.
            Source=mscorlib
            FileName=d:\OCW\SistemaOCW\SistemaOCW\bin\hibernate.cfg.xml

Confira se o hibernate.cfg.xml foi criado no projeto e além disso, verifique se você mudou a propriedade Copy To Output Directory do arquivo para Copy Always (Você pode ver como fazer isso no primeiro vídeo do curso).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software