Fórum Visualização de dados atraves de mapeamento relacional #300

30/10/2008

0

Olá,   Bom dia, vamos La, vou tentar explicar o que eu gostaria que me ajuda-se a programar nessa tela, uma forma de carregar as informações do Banco de dados usando mapeamento relacional usando NHibernate.   Parece que tem um jeito de passar todo o projeto zipado, mas eu não achei o meio de fazê-lo.   Pois bem, o caminho do arquivo que eu quero programar seria D:\PROJETOS\Ral\VisualizadorRAL\site\lavra\visualizarDadosBasicos.aspx   Nesse aspx, tem um ajax:ModalPopupExtender e um asp:panel   Eles são carregados quando uma checkbox e selecionada, meu problema é:   Preciso carregar esse tipo de popup-selecionavel com as informações de Banco de dados SQL-Server2005 (Que roda em servidor, aparte), mas eu não to conseguindo fazer o mapeamento relacional NHibernate e as classes MVC para ele.

O que você me sugere ou me ajudaria nisso:?   Att.   Alencar Porto
alencarxx@hotmail.com
Alencar Porto

Alencar Porto

Responder

Posts

30/10/2008

Guinther Pauli

Olá Alencar, tudo bem ?
Bom, o que eu poderia lhe dizer sobre a solução é a seguinte: Começaremos por usar o LINQ To SQL, que é uma ótima ferramente de mapeamento relacional,
e que eu julgo mais fácil de trabalhar do que o Hibernate.

Se houver qualquer resitência em utilizar o LINQ me informe que voltamos ao Hibernate.

Você irá criar um arquivo do tipo DBML (Linq To SQL) nele você informará qual o banco de dados,
ele irá automaticamente criar as classes de entidade pra você com as mesmas regras do banco de dados e a partir
do mesmo você conseguirá manipular toda a base de dados.

Existe um curso na DevMedia sobre como fazer divisão em camadas utilizando o LINQ,
ficou muito bacana o curso e seria ótimo você dar uma olhada.

https://www.devmedia.com.br/articles/viewcomp.asp?comp=8359

E tem esse curso sobre camadas, mas não utilizo LINQ neste.

https://www.devmedia.com.br/cursos/listcurso.asp?curso=77

Se voce nao tiver acesso a estes cursos, me avise que eu providencio o acesso para voce;

O ModalPopupExtender não tem segredos, é bem simples de fazer.
Você está tendo problemas com ele também ou somente com o mapeamento das entidades ?

Qualquer dúvida que tiver por favor entre em contato, vamos resolver seu problema da melhor maneira possível.

Caso essa não seja a resposta esperada, por favor me envie exatamente qual o problema está ocorrendo no mapeamento,
para que eu possa lhe ajudar com mais clareza e objetividade.

Abraços
Responder

Gostei + 0

31/10/2008

Guinther Pauli

Alencar

  Complementando o email anterior:
 
Para fazer o mapeamento O/R com NHibernate, é preciso ter as classes criadas, respectivamente às tabelas do banco. Se esse mapeamento não estiver corretamente configurado, o seu aplicativo não conseguirá ler os dados do banco SQL2005. Aqui vai uma breve descrição dos passos e um exemplo para uma tabela chamada Pessoas, com herança.

1 - Fazer o mapeamento no arquivo .hbm.xmlAqui vai um exemplo:
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">       <class name="Pessoa, App_Code" table="Pessoas">                         <!-- Primary Key(s) -->             <id name="Id" column="Id" type="String">                   <generator class="assigned" />             </id>               <!-- Properties -->             <property name="Nome" column="Nome" type="String" length="50"/>                 <!-- Mapeamento de Heranca - Tabela por Subclasse -->                   <joined-subclass name="PessoaFisica, App_Code" table="PessoasFisicas">                   <key column="Id"/>                   <property name="CPF" column="CPF" type="String" length="15"/>                   <property name="RG" column="RG" type="String" length="15"/>                  </joined-subclass>                         <joined-subclass name="PessoaJuridica, App_Code" table="PessoasJuridicas">                   <key column="Id"/>                   <property name="CNPJ" column="CNPJ" type="String" length="20"/>                   <property name="InscricaoEstadual" column="InscricaoEstadual" type="String" length="20"/>             </joined-subclass>                   </class> </hibernate-mapping>
2 - Criar uma connectionFactory.cs para gerenciar as conexões.Aqui vai um exemplo: using System; using System.Collections.Generic; using System.Text; using NHibernate; using NHibernate.Cfg;   public class ConnectionFactory {     public Configuration objConf { get; set; }     public static ISessionFactory objFactory { get; set; }       public ConnectionFactory()     {         try         {             this.objConf = new Configuration();                         string basePath = System.Web.HttpContext.Current.Server.MapPath( @"~/App_Code/");             objConf.AddXmlFile(basePath + "Pessoa.hbm.xml");               objFactory = objConf.BuildSessionFactory();         }         catch (Exception ex)         {             throw ex;         }     }       public static ISessionFactory getConnection()     {         if (objFactory == null)         {             ConnectionFactory objGlobal = new ConnectionFactory();         }         return objFactory;     } }
3 - Acertar configurações do web.config.Aqui vai um exemplo:
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System,             Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<nhibernate> <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>       <add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect"/>       <add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>       <add key="hibernate.connection.connection_string" value="Data Source=(local);Initial Catalog=TesteORM;Integrated Security=True"/>       <add key="hibernate.connection.isolation" value="ReadCommitted"/> </nhibernate> 4 - E basicamente acessar os dados nas páginas normalmente.Veja que esse acesso é feito diretamente através do objeto mapeado no NHibernate, ou seja, basicamente lemos um atributo de um objeto, tudo o que você precisa fazer é jogar esse valor onde desejar.Exemplo de leitura de propriedade:
pessoa.Nome
Abs
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar