Visualização de dados atraves de mapeamento relacional
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
O que você me sugere ou me ajudaria nisso:? Att. Alencar Porto
alencarxx@hotmail.com
Alencar Porto
Curtidas 0
Respostas
Guinther Pauli
30/10/2008
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
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
GOSTEI 0
Guinther Pauli
30/10/2008
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
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
GOSTEI 0