<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>@{ new Blog(&#34;Leandro Prado&#34;); }</title>
	<atom:link href="http://www.leandroprado.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.leandroprado.com.br</link>
	<description>SOA - WebServices - Arquitetura - Microsoft .NET</description>
	<lastBuildDate>Mon, 20 Feb 2012 01:06:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Customizando o portal do projeto</title>
		<link>http://www.leandroprado.com.br/2012/01/customizando-o-portal-do-projeto/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=customizando-o-portal-do-projeto</link>
		<comments>http://www.leandroprado.com.br/2012/01/customizando-o-portal-do-projeto/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 15:25:33 +0000</pubDate>
		<dc:creator>Leandro Prado</dc:creator>
				<category><![CDATA[TFS 2010]]></category>
		<category><![CDATA[alm]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://www.leandroprado.com.br/?p=2022</guid>
		<description><![CDATA[Quando criamos um projeto no TFS, automaticamente é criado um portal em Sharepoint, para que o cliente possa acompanhar o andamento do projeto. Para visualizar esse portal, basta clicar com...]]></description>
			<content:encoded><![CDATA[<p>Quando criamos um projeto no TFS, automaticamente é criado um portal em Sharepoint, para que o cliente possa acompanhar o andamento do projeto. Para visualizar esse portal, basta clicar com o botão direito sobre o projeto e selecionar a opção <strong>Show Project Portal</strong></p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem1.png"><img class="alignnone size-full wp-image-2023" title="Show Project Portal" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem1.png" alt="" width="440" height="275" /></a></p>
<p>Abaixo segue uma imagem do portal padrão:</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem2.png"><img class="alignnone  wp-image-2026" title="Portal Padrão" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem2.png" alt="" width="596" height="390" /></a></p>
<p>Porém muitos clientes pedem para que esse portal seja customizado, como por exemplo criar bibliotecas com as fases de construção do projeto, então esse post irá exemplificar como criar algumas listas no portal, salvar como template e setar como um novo padrão para novos projetos no TFS.</p>
<p>As versões que estamos usando é TFS 2010 e Sharepoint 2010</p>
<h2>1) Criar as listas</h2>
<p>Para criar novas listas no portal do projeto, acesse a opção<strong> Site actions -&gt; New Document Library</strong></p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem3.png"><img class="alignnone size-full wp-image-2024" title="New Document Library" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem3.png" alt="" width="257" height="461" /></a></p>
<p>Abrirá uma nova tela para adicionar o <strong>Nome e Descrição</strong>, depois clique em <strong>Create</strong></p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem4.png"><img class="alignnone  wp-image-2025" title="Gerenciamento de Projeto" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem4.png" alt="" width="596" height="372" /></a></p>
<p>Faça esse mesmo processo para as listas <strong>Desenvolvimento, Testes, Protótipo</strong></p>
<p>No final seu portal deve ficar conforme abaixo:</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem5.png"><img class="alignnone size-full wp-image-2027" title="Listas criadas" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem5.png" alt="" width="173" height="580" /></a></p>
<h2>2) Salvar como template</h2>
<p>Depois de criado todo o padrão do portal, temos que salvar esse portal como um template, para isso temos que selecionar a opção <strong>Site Action -&gt; Site Settings</strong></p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem6.png"><img class="alignnone size-full wp-image-2028" title="Site Settings" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem6.png" alt="" width="259" height="508" /></a></p>
<p>Selecione a opção <strong>Save site as template</strong></p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem7.png"><img class="alignnone  wp-image-2029" title="Save site as template" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem7.png" alt="" width="596" height="275" /></a></p>
<p>Preencha as informações de<strong> Name, Description</strong> e clique em OK</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem8.png"><img class="alignnone  wp-image-2030" title="Informações do portal" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem8.png" alt="" width="596" height="342" /></a></p>
<p>Se tudo ocorrer corretamente, deverá ser exibida a seguinte mensagem, clique em OK:</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem9.png"><img class="alignnone size-full wp-image-2031" title="Successfully " src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem9.png" alt="" width="594" height="306" /></a></p>
<p>Para verificar se seu template foi salvo, entre no portal da Collection, que nesse caso é <strong>Default Collection</strong></p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem10.png"><img class="alignnone size-full wp-image-2032" title="Portal da Collection" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem10.png" alt="" width="287" height="243" /></a></p>
<p>Agora selecione a opção <strong>Site Actions -&gt; Site Settings -&gt; Solutions</strong></p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem11.png"><img class="alignnone  wp-image-2033" title="Solutions" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem11.png" alt="" width="594" height="452" /></a></p>
<p>Veja que o nosso template com o nome <strong>TemplateTutorial</strong> esta aparecendo na lista e seu status está <strong>Activated</strong></p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem12.png"><img class="alignnone  wp-image-2034" title="Solution Gallery" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem12.png" alt="" width="591" height="185" /></a></p>
<h2>3) Alterar o Process Template do TFS</h2>
<p>Agora que o nosso portal padrão ja está criado, temos que alterar o process template do TFS para que nos próximos projetos ele possa usar esse novo padrão.</p>
<p>Para isso baixe o process template do TFS para sua máquina usando o TFS Power Tools ( se você não sabe baixar, <a title="Customizando WorkItem no TFS 2010" href="http://www.leandroprado.com.br/2011/01/customizando-workitem-no-tfs-2010/">veja esse post</a> ) e acesse a pasta <strong>Windows SharePoint Services</strong>. Dentro dessa pasta existe um arquivo XML chamado <strong>WssTasks.xml</strong>, abra em um editor e altere a opção <strong>site template</strong> para o nome do template salvo anteriormente</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem13.png"><img class="alignnone size-full wp-image-2036" title="Editando o Process Template" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem13.png" alt="" width="596" height="246" /></a></p>
<p>Após de fazer essa pequena alteração, fala o upload do process template novamente para o TFS</p>
<h2>4) Testando</h2>
<p>Para verificar se nosso template está como padrão no TFS, vamos criar um novo projeto usando nosso process template alterado, veja na imagem abaixo que as listas que criamos já vem como default no portal</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem14.png"><img class="alignnone size-full wp-image-2038" title="Portal com o novo padrão" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/portal_imagem14.png" alt="" width="351" height="575" /></a></p>
<p>Deixe seu comentário, opinião, critica</p>
<p>Aquele abraço!</p>
<h2  class="related_post_title">Leia mais</h2><ul class="related_post"><li><a href="http://www.leandroprado.com.br/2012/01/treinamento-de-alm-em-sao-paulo/" title="Treinamento de ALM em São Paulo ">Treinamento de ALM em São Paulo </a></li><li><a href="http://www.leandroprado.com.br/2012/01/rastreamento-de-work-items-no-tfs-2010/" title="Rastreamento de Work Items no TFS 2010">Rastreamento de Work Items no TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/11/configurando-build-com-tfs-2010/" title="Configurando Build com TFS 2010">Configurando Build com TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/11/integrando-sua-aplicacao-com-o-tfs-2010/" title="Integrando sua aplicação com o TFS 2010">Integrando sua aplicação com o TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/11/gerenciando-branchs-com-tfs-2010/" title="Gerenciando Branchs com TFS 2010">Gerenciando Branchs com TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/10/configurando-o-tfs-2010/" title="Configurando o TFS 2010">Configurando o TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/10/teched-2011/" title="TechEd 2011">TechEd 2011</a></li><li><a href="http://www.leandroprado.com.br/2011/06/revista-mundo-net-customizando-work-item/" title="Revista Mundo .NET &#8211; Customizando Work Item">Revista Mundo .NET &#8211; Customizando Work Item</a></li><li><a href="http://www.leandroprado.com.br/2011/04/configurando-o-eclipse-com-o-tfs-2010/" title="Configurando o eclipse com o TFS 2010">Configurando o eclipse com o TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/01/customizando-workitem-no-tfs-2010/" title="Customizando WorkItem no TFS 2010">Customizando WorkItem no TFS 2010</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.leandroprado.com.br/2012/01/customizando-o-portal-do-projeto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Treinamento de ALM em São Paulo</title>
		<link>http://www.leandroprado.com.br/2012/01/treinamento-de-alm-em-sao-paulo/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=treinamento-de-alm-em-sao-paulo</link>
		<comments>http://www.leandroprado.com.br/2012/01/treinamento-de-alm-em-sao-paulo/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 02:09:05 +0000</pubDate>
		<dc:creator>Leandro Prado</dc:creator>
				<category><![CDATA[TFS 2010]]></category>
		<category><![CDATA[alm]]></category>

		<guid isPermaLink="false">http://www.leandroprado.com.br/?p=2041</guid>
		<description><![CDATA[Pessoal, Para a galera que mora em São Paulo tem uma grande oportunidade de participar de um curso que a Microsoft e a especificacoes.com estão oferecendo! Veja abaixo alguns temas que...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/curso_alm_pequeno.png"><img class="alignleft  wp-image-2044" title="curso_alm_pequeno" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/curso_alm_pequeno.png" alt="" width="238" height="100" /></a>Pessoal,</p>
<p>Para a galera que mora em São Paulo tem uma grande oportunidade de participar de um curso que a Microsoft e a <a title="Especificações" href="http://www.especificacoes.com/" target="_blank">especificacoes.com</a> estão oferecendo!</p>
<p>Veja abaixo alguns temas que serão abordados!</p>
<ul>
<li>ALM &#8211; Visão Geral</li>
<li>Montando e configurando um ambiente ALM</li>
<li>Montando e configurando um ambiente PPM</li>
<li>Integração ALM e PPM &#8211; O que o time ganha</li>
<li>Metodologias (Agile, CMMi, Scrum)</li>
<li>Metodologias e templates</li>
<li>Introdução aos conceitos de testes</li>
<li>Teste: do teste unitário a gerência de testes</li>
</ul>
<p>Para mais informações e inscrições acess o site <a href="http://www.alm.net.br/">http://www.alm.net.br/</a></p>
<p>Aproveitem!!</p>
<p>Aquele abraço!</p>
<h2  class="related_post_title">Leia mais</h2><ul class="related_post"><li><a href="http://www.leandroprado.com.br/2012/01/customizando-o-portal-do-projeto/" title="Customizando o portal do projeto">Customizando o portal do projeto</a></li><li><a href="http://www.leandroprado.com.br/2012/01/rastreamento-de-work-items-no-tfs-2010/" title="Rastreamento de Work Items no TFS 2010">Rastreamento de Work Items no TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/11/configurando-build-com-tfs-2010/" title="Configurando Build com TFS 2010">Configurando Build com TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/11/integrando-sua-aplicacao-com-o-tfs-2010/" title="Integrando sua aplicação com o TFS 2010">Integrando sua aplicação com o TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/11/gerenciando-branchs-com-tfs-2010/" title="Gerenciando Branchs com TFS 2010">Gerenciando Branchs com TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/10/configurando-o-tfs-2010/" title="Configurando o TFS 2010">Configurando o TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/10/teched-2011/" title="TechEd 2011">TechEd 2011</a></li><li><a href="http://www.leandroprado.com.br/2011/06/revista-mundo-net-customizando-work-item/" title="Revista Mundo .NET &#8211; Customizando Work Item">Revista Mundo .NET &#8211; Customizando Work Item</a></li><li><a href="http://www.leandroprado.com.br/2011/04/configurando-o-eclipse-com-o-tfs-2010/" title="Configurando o eclipse com o TFS 2010">Configurando o eclipse com o TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/01/customizando-workitem-no-tfs-2010/" title="Customizando WorkItem no TFS 2010">Customizando WorkItem no TFS 2010</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.leandroprado.com.br/2012/01/treinamento-de-alm-em-sao-paulo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gerando arquivos HBM com Fluent NHibernate</title>
		<link>http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gerando-arquivos-hbm-com-fluent-nhibernate</link>
		<comments>http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 17:58:10 +0000</pubDate>
		<dc:creator>Leandro Prado</dc:creator>
				<category><![CDATA[Fluent NHibernate]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://www.leandroprado.com.br/?p=1480</guid>
		<description><![CDATA[Vamos dar sequência em nossa série sobre Fluent NHibernate Começando com Fluent NHibernate Mapeamentos com Fluent NHibernate Usando o Fluent NHibernate Gerando arquivos HBM Gerar arquivo SQL do mapeamento Como...]]></description>
			<content:encoded><![CDATA[<p>Vamos dar sequência em nossa série sobre Fluent NHibernate</p>
<ol>
<li><a title="Começando com Fluent NHibernate" href="http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/" target="_blank">Começando com Fluent NHibernate</a></li>
<li><a title="Mapeamentos com Fluent NHibernate" href="http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/" target="_blank">Mapeamentos com Fluent NHibernate</a></li>
<li><a title="Usando o Fluent NHibernate" href="http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/">Usando o Fluent NHibernate</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/" title="Gerando arquivos HBM com Fluent NHibernate">Gerando arquivos HBM</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/" title="Gerar arquivo SQL do mapeamento com Fluent NHibernate">Gerar arquivo SQL do mapeamento</a></li>
<li>Como funciona o Lazy Load</li>
<li>Configurando Log4NET</li>
</ol>
<p>Para aqueles que gostam de usar os mapeamentos via XML, o fluent tem a opção de gerar esses arquivos automaticamente, veja abaixo o código</p>
<pre class="brush: csharp; title: ; notranslate">
public static void CriarArquivosHbm()
{
    FluentConfiguration configuration = Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2008.ConnectionString(
                    x =&gt; x.FromConnectionStringWithKey(&quot;ConexaoBanco&quot;)).ShowSql())
        .Mappings(x =&gt; x.FluentMappings.AddFromAssemblyOf&lt;Pessoa&gt;().ExportTo(&quot;C:\\Temp&quot;));

    configuration.BuildSessionFactory();
}
</pre>
<p>Depois é só chamar esse método em nosso teste</p>
<pre class="brush: csharp; title: ; notranslate">
[TestMethod]
public void Criar_Arquivos_HBM()
{
    Conexao.CriarArquivosHbm();
}
</pre>
<p>Depois de executado, basta entrar na pasta que configuramos, nesse caso C:\Temp</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/arquivos_xml.png"><img class="aligncenter size-full wp-image-2005" title="Arquivos xml" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/arquivos_xml.png" alt="" width="447" height="119" /></a></p>
<p>Se abrir um desses arquivos, podemos ver que é gerado todos os nossos mapeamentos</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/mapeamentos_xml.png"><img class="aligncenter  wp-image-2006" title="Mapeamentos xml" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/mapeamentos_xml.png" alt="" width="599" height="259" /></a></p>
<p>Não vejo muita utilidade em usar arquivos XML para mapeamento usando fluent, porém deixo essa dica para quem quiser usar.</p>
<p>Deixe seu comentário, opinião, critica</p>
<p>Aquele abraço!</p>
<h2  class="related_post_title">Leia mais</h2><ul class="related_post"><li><a href="http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/" title="Gerar arquivo SQL do mapeamento com Fluent NHibernate">Gerar arquivo SQL do mapeamento com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/" title="Usando o Fluent NHibernate">Usando o Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/" title="Mapeamentos com Fluent NHibernate">Mapeamentos com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/" title="Começando com Fluent NHibernate">Começando com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2010/10/crud-com-entity-framework-e-asp-net-mvc/" title="CRUD com Entity Framework e ASP NET MVC">CRUD com Entity Framework e ASP NET MVC</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Gerar arquivo SQL do mapeamento com Fluent NHibernate</title>
		<link>http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate</link>
		<comments>http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 17:57:36 +0000</pubDate>
		<dc:creator>Leandro Prado</dc:creator>
				<category><![CDATA[Fluent NHibernate]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://www.leandroprado.com.br/?p=1482</guid>
		<description><![CDATA[Vamos dar sequência em nossa série sobre Fluent NHibernate Começando com Fluent NHibernate Mapeamentos com Fluent NHibernate Usando o Fluent NHibernate Gerando arquivos HBM Gerar arquivo SQL do mapeamento Como...]]></description>
			<content:encoded><![CDATA[<p>Vamos dar sequência em nossa série sobre Fluent NHibernate</p>
<ol>
<li><a title="Começando com Fluent NHibernate" href="http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/" target="_blank">Começando com Fluent NHibernate</a></li>
<li><a title="Mapeamentos com Fluent NHibernate" href="http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/" target="_blank">Mapeamentos com Fluent NHibernate</a></li>
<li><a title="Usando o Fluent NHibernate" href="http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/">Usando o Fluent NHibernate</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/" title="Gerando arquivos HBM com Fluent NHibernate">Gerando arquivos HBM</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/" title="Gerar arquivo SQL do mapeamento com Fluent NHibernate">Gerar arquivo SQL do mapeamento</a></li>
<li>Como funciona o Lazy Load</li>
<li>Configurando Log4NET</li>
</ol>
<p>Uma das opções que o Fluent NHibernate possui, é gerar um arquivo SQL para executar direto no banco, essa opção é muito útil quando vamos colocar o sistema em produção, apenas executamos esse script e todo banco ja está criado.</p>
<p>Para gerar esse arquivo é bastante simples, veja abaixo:</p>
<pre class="brush: csharp; title: ; notranslate">
public static void CriarScriptsBanco()
{
    FluentConfiguration configuration = Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2008.ConnectionString(
                    x =&gt; x.FromConnectionStringWithKey(&quot;ConexaoBanco&quot;)).ShowSql())
        .ExposeConfiguration(cfg =&gt; new SchemaExport(cfg).SetOutputFile(&quot;C:\\Temp\\scripts.sql&quot;).Create(true, false))
        .Mappings(x =&gt; x.FluentMappings.AddFromAssemblyOf&lt;Pessoa&gt;());

    configuration.BuildSessionFactory();
}
</pre>
<p>Tudo acontece na no método SetOutputFile onde colocamos o diretório onde será salvo nosso script</p>
<p>Depois é só chamar esse método em nosso teste</p>
<pre class="brush: csharp; title: ; notranslate">
[TestMethod]
public void Criar_Arquivos_SQL()
{
    Conexao.CriarScriptsBanco();
}
</pre>
<p>Depois de executado, basta entrar na pasta que configuramos, nesse caso C:\Temp e abrir o arquivo</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabelas1.png"><img src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabelas1.png" alt="" title="Tabelas" width="448" height="944" class="alignnone size-full wp-image-2009" /></a></p>
<p>Deixe seu comentário, opinião, critica</p>
<p>Aquele abraço!</p>
<h2  class="related_post_title">Leia mais</h2><ul class="related_post"><li><a href="http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/" title="Gerando arquivos HBM com Fluent NHibernate">Gerando arquivos HBM com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/" title="Usando o Fluent NHibernate">Usando o Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/" title="Mapeamentos com Fluent NHibernate">Mapeamentos com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/" title="Começando com Fluent NHibernate">Começando com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2010/10/crud-com-entity-framework-e-asp-net-mvc/" title="CRUD com Entity Framework e ASP NET MVC">CRUD com Entity Framework e ASP NET MVC</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Usando o Fluent NHibernate</title>
		<link>http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=usando-o-fluent-nhibernate</link>
		<comments>http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 16:14:38 +0000</pubDate>
		<dc:creator>Leandro Prado</dc:creator>
				<category><![CDATA[Fluent NHibernate]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://www.leandroprado.com.br/?p=1963</guid>
		<description><![CDATA[Vamos dar sequência em nossa série sobre Fluent NHibernate Começando com Fluent NHibernate Mapeamentos com Fluent NHibernate Usando o Fluent NHibernate Gerando arquivos HBM Gerar arquivo SQL do mapeamento Como...]]></description>
			<content:encoded><![CDATA[<p>Vamos dar sequência em nossa série sobre Fluent NHibernate</p>
<ol>
<li><a title="Começando com Fluent NHibernate" href="http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/" target="_blank">Começando com Fluent NHibernate</a></li>
<li><a title="Mapeamentos com Fluent NHibernate" href="http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/" target="_blank">Mapeamentos com Fluent NHibernate</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/" title="Usando o Fluent NHibernate">Usando o Fluent NHibernate</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/" title="Gerando arquivos HBM com Fluent NHibernate">Gerando arquivos HBM</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/" title="Gerar arquivo SQL do mapeamento com Fluent NHibernate">Gerar arquivo SQL do mapeamento</a></li>
<li>Como funciona o Lazy Load</li>
<li>Configurando Log4NET</li>
</ol>
<p>Nessa terceira etapa vamos aprender como usar o Fluent NHibernate fazendo um CRUD com os mapeamentos que fizemos no post anterior</p>
<h2>Classe Conexão</h2>
<p>Antes de mais nada, vamos criar uma classe para realizar a conexão com o banco que retorna uma sessão para que possamos realizar as tarefas no banco, veja abaixo o código</p>
<pre class="brush: csharp; title: ; notranslate">
public class Conexao
{
    public static ISessionFactory CreateSessionFactory()
    {
        FluentConfiguration configuration = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008.ConnectionString(
               x =&gt; x.FromConnectionStringWithKey(&quot;ConexaoBanco&quot;)).ShowSql())
            .Mappings(x =&gt; x.FluentMappings.AddFromAssemblyOf&lt;Pessoa&gt;());

        return configuration.BuildSessionFactory();
    }
}
</pre>
<p>Linha 5: Iniciamos a classe para realizar a configuração</p>
<p>Linha 6: Configuramos o banco</p>
<p>Linha 7: Configuramos a string de conexão que está no arquivo de configuração (web.config, App.config)</p>
<p>Linha 8: Adicionamos o assembly onde está nossas entidades. Não é preciso adicionar todas suas entidades, apenas uma para o Fluent saber em qual assembly buscar as informações</p>
<p>Linha 10: Retornamos uma session</p>
<h2>Cadastrar Departamento</h2>
<p>Primeiramente vamos cadastrar os departamentos</p>
<pre class="brush: csharp; title: ; notranslate">
[TestMethod]
public void Cadastrar_Departamento()
{
    var sessionFactory = Conexao.CreateSessionFactory();

    using (var session = sessionFactory.OpenSession())
    {
        using (var transaction = session.BeginTransaction())
        {
            Departamento _obj1 = new Departamento();
            _obj1.Nome = &quot;Diretoria&quot;;
            _obj1.Descricao = &quot;Departamento diretoria&quot;;
            _obj1.DataCadastro = DateTime.Now;
            session.Save(_obj1);

            Departamento _obj2 = new Departamento();
            _obj2.Nome = &quot;Comercial&quot;;
            _obj2.Descricao = &quot;Departamento comercial&quot;;
            _obj2.DataCadastro = DateTime.Now;
            session.Save(_obj2);

            transaction.Commit();
        }
    }
}
</pre>
<p>Linha 4: Criamos uma conexão com o banco</p>
<p>Linha 6: Abrimos a conexão com o banco</p>
<p>Linha 8: Abrimos uma transação</p>
<p>Linha 10: Criamos um objeto do tipo Departamento</p>
<p>Linha 11: Atribuimos seus valores</p>
<p>Linha 14: Mandamos salvar o objeto</p>
<p>Linha 22: Persistimos as informações no banco</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabela_departamento.png"><img src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabela_departamento.png" alt="" title="Tabela Departamento" width="456" height="147" class="aligncenter size-full wp-image-1972" /></a></p>
<h2>Cadastrar Grupo</h2>
<p>Agora vamos cadastrar os Grupos, segue o mesmo padrão descrito acima</p>
<pre class="brush: csharp; title: ; notranslate">
[TestMethod]
public void Cadastrar_Grupo()
{
    var sessionFactory = Conexao.CreateSessionFactory();

    using (var session = sessionFactory.OpenSession())
    {
        using (var transaction = session.BeginTransaction())
        {
            Grupo _obj1 = new Grupo();
            _obj1.Nome = &quot;Grupo 1&quot;;
            _obj1.Descricao = &quot;Descrição do Grupo1&quot;;
            _obj1.DataCadastro = DateTime.Now;
            session.Save(_obj1);

            Grupo _obj2 = new Grupo();
            _obj2.Nome = &quot;Grupo 2&quot;;
            _obj2.Descricao = &quot;Descrição do Grupo 2&quot;;
            _obj2.DataCadastro = DateTime.Now;
            session.Save(_obj2);

            transaction.Commit();
        }
    }
}
</pre>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabela_grupo.png"><img src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabela_grupo.png" alt="" title="Tabela Grupo" width="411" height="147" class="aligncenter size-full wp-image-1973" /></a></p>
<h2>Cadastrar Pessoa Fisica</h2>
<p>Vamos cadastrar uma pessoa fisica, veja que estamos instânciando a classe PessoaFisica que herda de Pessoa</p>
<pre class="brush: csharp; title: ; notranslate">
[TestMethod]
public void Cadastrar_Pessoa_Fisica()
{
    var sessionFactory = Conexao.CreateSessionFactory();

    using (var session = sessionFactory.OpenSession())
    {
        using (var transaction = session.BeginTransaction())
        {
            PessoaFisica _obj = new PessoaFisica();
            _obj.Nome = &quot;Nome da pessoa fisica&quot;;
            _obj.Endereco = &quot;Endereço da pessoa fisica&quot;;
            _obj.Cep = &quot;12345678&quot;;
            _obj.Email = &quot;pessoa1@gmail.com&quot;;
            _obj.DataCadastro = DateTime.Now;
            _obj.Cpf = &quot;12345678900&quot;;
            _obj.Nacionalidade = &quot;Brasil&quot;;

            _obj.Departamento = session.Get&lt;Departamento&gt;(1);

            _obj.Status = Status.Inativo;

            session.SaveOrUpdate(_obj);
            transaction.Commit();
        }
    }
}
</pre>
<p>Linha 19: Aqui temos que recuperar um Departamento que foi cadastrado anteriormente, por isso usamos a o opação <strong>Get</strong> passando o código</p>
<p>Linha 21: Usamos o nosso Enum para dizer o status da pessoa</p>
<h2>Cadastrar Pessoa Juridica</h2>
<p>Para a pessoa juridica segue o mesmo padrão da pessoa fisica</p>
<pre class="brush: csharp; title: ; notranslate">
[TestMethod]
public void Cadastrar_Pessoa_Juridica()
{
    var sessionFactory = Conexao.CreateSessionFactory();

    using (var session = sessionFactory.OpenSession())
    {
        using (var transaction = session.BeginTransaction())
        {
            PessoaJuridica _obj = new PessoaJuridica();
            _obj.Nome = &quot;Nome da pessoa juridica&quot;;
            _obj.Endereco = &quot;Endereço da pessoa juridica&quot;;
            _obj.Cep = &quot;12345678&quot;;
            _obj.Email = &quot;pessoa1@gmail.com&quot;;
            _obj.DataCadastro = DateTime.Now;
            _obj.Cnpj = &quot;12345678901234&quot;;
            _obj.WebSite = &quot;www.pessoajuridica.com.br&quot;;

            _obj.Departamento = session.Get&lt;Departamento&gt;(2);

            _obj.Status = Status.Inativo;

            session.SaveOrUpdate(_obj);
            transaction.Commit();
        }
    }
}
</pre>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabela_pessoa.png"><img src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabela_pessoa.png" alt="" title="Tabela PessoaFisica e PessoaJuridica" width="590" height="220" class="aligncenter size-full wp-image-1974" /></a></p>
<h2>Cadastrar Pessoa Fisica com Telefones</h2>
<p>Agora vamos cadastrar os Telefones de uma pessoa, veja abaixo o código</p>
<pre class="brush: csharp; title: ; notranslate">
[TestMethod]
public void Cadastrar_Pessoa_Fisica_Com_Telefone()
{
    var sessionFactory = Conexao.CreateSessionFactory();

    using (var session = sessionFactory.OpenSession())
    {
        using (var transaction = session.BeginTransaction())
        {
            PessoaFisica _obj = new PessoaFisica();
            _obj.Nome = &quot;Nome da pessoa fisica com telefone&quot;;
            _obj.Endereco = &quot;Endereço da pessoa fisica com telefone&quot;;
            _obj.Cep = &quot;12345678&quot;;
            _obj.Email = &quot;pessoa1@gmail.com&quot;;
            _obj.DataCadastro = DateTime.Now;
            _obj.Cpf = &quot;12345678900&quot;;
            _obj.Nacionalidade = &quot;Brasil&quot;;

            _obj.Departamento = session.Get&lt;Departamento&gt;(1);

            _obj.Status = Status.Inativo;

            _obj.Telefones.Add(new Telefone()
            {
                CodigoDdd = 41,
                Numero = 123456
            });

            _obj.Telefones.Add(new Telefone()
            {
                CodigoDdd = 41,
                Numero = 654321
            });

            session.SaveOrUpdate(_obj);
            transaction.Commit();
        }
    }
}
</pre>
<p>Linha 23 / 29 : Criamos uma nova instância da classe Telefone e adicionamos na propriedade <strong>Telefones</strong> que é uma lista</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabela_pessoa_telefone.png"><img src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabela_pessoa_telefone.png" alt="" title="Tabela Pessoa Fisica + Telefone" width="590" height="220" class="aligncenter size-full wp-image-1983" /></a></p>
<h2>Cadastrar Pessoa Fisica com Telefones e com Grupos</h2>
<p>Agora vamos cadastrar os Grupos de uma pessoa, veja abaixo o código</p>
<pre class="brush: csharp; title: ; notranslate">
[TestMethod]
public void Cadastrar_Pessoa_Fisica_Com_Telefone_Com_Grupo()
{
    var sessionFactory = Conexao.CreateSessionFactory();

    using (var session = sessionFactory.OpenSession())
    {
        using (var transaction = session.BeginTransaction())
        {
            PessoaFisica _obj = new PessoaFisica();
            _obj.Nome = &quot;Nome da pessoa fisica com telefone com telefone&quot;;
            _obj.Endereco = &quot;Endereço da pessoa fisica com telefone com telefone&quot;;
            _obj.Cep = &quot;12345678&quot;;
            _obj.Email = &quot;pessoa1@gmail.com&quot;;
            _obj.DataCadastro = DateTime.Now;
            _obj.Cpf = &quot;12345678900&quot;;
            _obj.Nacionalidade = &quot;Brasil&quot;;

            _obj.Departamento = session.Get&lt;Departamento&gt;(1);

            _obj.Status = Status.Inativo;

            _obj.Telefones.Add(new Telefone()
            {
                CodigoDdd = 41,
                Numero = 123456
            });

            _obj.Telefones.Add(new Telefone()
            {
                CodigoDdd = 41,
                Numero = 654321
            });

            _obj.Grupos.Add(session.Get&lt;Grupo&gt;(1));
            _obj.Grupos.Add(session.Get&lt;Grupo&gt;(2));

            session.SaveOrUpdate(_obj);
            transaction.Commit();
        }
    }
}
</pre>
<p>Linha 35 / 35 : Recupero o grupo e adiciona na lista de Grupo</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabela_pessoa_telefone_grupo.png"><img src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabela_pessoa_telefone_grupo.png" alt="" title="Tabela Pessoa Fisica + Telefone + Grupo" width="590" height="200" class="aligncenter size-full wp-image-1988" /></a></p>
<h2>Deletar Pessoa Fisica</h2>
<p>Quando vamos deletar um registro, temos que tomar cuidado com os Cascade para não deletar entidades que não deviam ser deletadas</p>
<p>Nesse caso, quando deletar uma pessoa fisica, também será deletado seus Telefones e os Grupos que ela pertence da tabela (GruposToPessoas)</p>
<pre class="brush: csharp; title: ; notranslate">
[TestMethod]
public void Deletar_Pessoa_Fisica()
{
    var sessionFactory = Conexao.CreateSessionFactory();

    using (var session = sessionFactory.OpenSession())
    {
        using (var transaction = session.BeginTransaction())
        {
            var _obj = session.Get&lt;PessoaFisica&gt;(6);
            session.Delete(_obj);
            transaction.Commit();
        }
    }
}
</pre>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/delete_pessoa.png"><img src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/delete_pessoa.png" alt="" title="Deletar Pessoa Fisica" width="546" height="393" class="aligncenter size-full wp-image-1990" /></a></p>
<p>Veja que a tabela Grupos não foi deletado.</p>
<h2>Pesquisando Pessoa Fisica</h2>
<pre class="brush: csharp; title: ; notranslate">
[TestMethod]
public void Pesquisar_Pessoa_Fisica()
{
    var sessionFactory = Conexao.CreateSessionFactory();

    using (var session = sessionFactory.OpenSession())
    {
        var _obj = session.Get&lt;PessoaFisica&gt;(5);
        Assert.IsNotNull(_obj);
        Assert.IsTrue(_obj.Telefones.Count &gt; 0);
    }
}
</pre>
<p>Em nosso próximo post vamos ver como gerar os famosos arquivos HBM através do fluent</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/LeandroPrado.FluentNHibernate_Parte2.zip" title="FluentNHibernate Parte2" target="_blank">Download do projeto</a></p>
<p>Deixe seu comentário, opinião, critica</p>
<p>Aquele abraço!</p>
<h2  class="related_post_title">Leia mais</h2><ul class="related_post"><li><a href="http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/" title="Mapeamentos com Fluent NHibernate">Mapeamentos com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/" title="Começando com Fluent NHibernate">Começando com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/" title="Gerando arquivos HBM com Fluent NHibernate">Gerando arquivos HBM com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/" title="Gerar arquivo SQL do mapeamento com Fluent NHibernate">Gerar arquivo SQL do mapeamento com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2011/12/top-10-posts-de-2011/" title="Top 10 Posts de 2011">Top 10 Posts de 2011</a></li><li><a href="http://www.leandroprado.com.br/2010/12/veja-os-posts-mais-vistos-em-2010/" title="Top 10 Posts de 2010">Top 10 Posts de 2010</a></li><li><a href="http://www.leandroprado.com.br/2010/11/mapeamento-many-to-many-com-nhibernate/" title="Mapeamento Many to Many com NHibernate">Mapeamento Many to Many com NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2010/11/mapeamento-one-to-many-com-nhibernate/" title="Mapeamento One to Many com NHibernate">Mapeamento One to Many com NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2010/10/crud-com-entity-framework-e-asp-net-mvc/" title="CRUD com Entity Framework e ASP NET MVC">CRUD com Entity Framework e ASP NET MVC</a></li><li><a href="http://www.leandroprado.com.br/2010/10/usando-nhibernate-com-asp-net-mvc/" title="Usando NHibernate com ASP NET MVC">Usando NHibernate com ASP NET MVC</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rastreamento de Work Items no TFS 2010</title>
		<link>http://www.leandroprado.com.br/2012/01/rastreamento-de-work-items-no-tfs-2010/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rastreamento-de-work-items-no-tfs-2010</link>
		<comments>http://www.leandroprado.com.br/2012/01/rastreamento-de-work-items-no-tfs-2010/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 11:45:37 +0000</pubDate>
		<dc:creator>Leandro Prado</dc:creator>
				<category><![CDATA[TFS 2010]]></category>
		<category><![CDATA[rastreamento]]></category>
		<category><![CDATA[WorkItem]]></category>

		<guid isPermaLink="false">http://www.leandroprado.com.br/?p=1951</guid>
		<description><![CDATA[Eis que hoje no meio da tarde chega um gerente de projeto em minha mesa e pergunta: Leandro, tem como gerar um relatório no TFS que eu consiga rastrear todos...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/wi_visualizer.png"><img class="alignleft size-thumbnail wp-image-1958" title="wi_visualizer" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/wi_visualizer-150x150.png" alt="" width="150" height="150" /></a>Eis que hoje no meio da tarde chega um gerente de projeto em minha mesa e pergunta:</p>
<p><em>Leandro, tem como gerar um relatório no TFS que eu consiga rastrear todos os Work Items do meu projeto e sua relação?</em></p>
<p><em>Resposta: Eu nunca precisei usar e também nunca ninguém pediu, mas posso dar uma olhada para você!</em></p>
<p>Assim que o GP saiu, meu primeiro pensamento foi em usar a API do TFS, que já <a title="Integrando sua aplicação com o TFS 2010" href="http://www.leandroprado.com.br/2011/11/integrando-sua-aplicacao-com-o-tfs-2010/" target="_blank">descrevi aqui</a> como usar, porém seria um trabalhão!! Então fui fazer uma pesquisa rápida no pai dos burros (Google) e acabei encontrando o plugin para Visual Studio chamado <a title="Work Item Visualizer for TFS 2010" href="http://visualstudiogallery.msdn.microsoft.com/a35b6010-750b-47f6-a7a5-41f0fa7294d2" target="_blank">Work Item Visualizer for TFS 2010</a>, foi a solução para o pedido do gerente de projeto!</p>
<p>Este plugin realmente foi muito útil, assim que você digita o número de um WorkItem ele gera o rastreamento do mesmo</p>
<h2>Exemplo</h2>
<p>Temos uma User Story Realizar Login, desse WI foi gerado mais 3 Tasks (1 para modelagem, 1 para execução, 1 para teste) e a partir do Teste Case foi gerado vários Bugs. Veja na imagem abaixo como isso funciona!</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/mapeamento.png"><img class="aligncenter  wp-image-1952" title="Rastreabilidade de WI" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/mapeamento.png" alt="" width="591" height="394" /></a></p>
<p>Também temos a opção de gerar uma Matriz de Rastreabilidade, dessa forma podemos saber se alterar o UC Realizar Login quais serão os impactos que poderão impactar no seu projeto</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/matriz.png"><img class="aligncenter  wp-image-1953" title="Matriz" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/matriz.png" alt="" width="593" height="474" /></a></p>
<p>Sensacional!!!!</p>
<p>Quando fui mostrar isse plugin para o gerente, o bicho pulava de alegria!!! e o pessoal do CMMI chegou a chorar (exagero) hehehehe!!! e pagou pau novamente para o TFS!</p>
<p>Deixe seu comentário, opinião, crítica</p>
<p>Aquele abraço!</p>
<h2  class="related_post_title">Leia mais</h2><ul class="related_post"><li><a href="http://www.leandroprado.com.br/2011/11/integrando-sua-aplicacao-com-o-tfs-2010/" title="Integrando sua aplicação com o TFS 2010">Integrando sua aplicação com o TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/06/revista-mundo-net-customizando-work-item/" title="Revista Mundo .NET &#8211; Customizando Work Item">Revista Mundo .NET &#8211; Customizando Work Item</a></li><li><a href="http://www.leandroprado.com.br/2011/01/customizando-workitem-no-tfs-2010/" title="Customizando WorkItem no TFS 2010">Customizando WorkItem no TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2012/01/customizando-o-portal-do-projeto/" title="Customizando o portal do projeto">Customizando o portal do projeto</a></li><li><a href="http://www.leandroprado.com.br/2012/01/treinamento-de-alm-em-sao-paulo/" title="Treinamento de ALM em São Paulo ">Treinamento de ALM em São Paulo </a></li><li><a href="http://www.leandroprado.com.br/2011/11/configurando-build-com-tfs-2010/" title="Configurando Build com TFS 2010">Configurando Build com TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/11/gerenciando-branchs-com-tfs-2010/" title="Gerenciando Branchs com TFS 2010">Gerenciando Branchs com TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/10/configurando-o-tfs-2010/" title="Configurando o TFS 2010">Configurando o TFS 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/10/teched-2011/" title="TechEd 2011">TechEd 2011</a></li><li><a href="http://www.leandroprado.com.br/2011/04/configurando-o-eclipse-com-o-tfs-2010/" title="Configurando o eclipse com o TFS 2010">Configurando o eclipse com o TFS 2010</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.leandroprado.com.br/2012/01/rastreamento-de-work-items-no-tfs-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mapeamentos com Fluent NHibernate</title>
		<link>http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mapeamentos-com-fluent-nhibernate</link>
		<comments>http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 11:38:55 +0000</pubDate>
		<dc:creator>Leandro Prado</dc:creator>
				<category><![CDATA[Fluent NHibernate]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://www.leandroprado.com.br/?p=1476</guid>
		<description><![CDATA[Vamos dar sequência em nossa série sobre Fluent NHibernate Começando com Fluent NHibernate Mapeamentos com Fluent NHibernate Usando o Fluent NHibernate Gerando arquivos HBM Gerar arquivo SQL do mapeamento Como...]]></description>
			<content:encoded><![CDATA[<p>Vamos dar sequência em nossa série sobre Fluent NHibernate</p>
<ol>
<li><a title="Começando com Fluent NHibernate" href="http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/" target="_blank">Começando com Fluent NHibernate</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/" title="Mapeamentos com Fluent NHibernate" target="_blank">Mapeamentos com Fluent NHibernate</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/" title="Usando o Fluent NHibernate">Usando o Fluent NHibernate</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/" title="Gerando arquivos HBM com Fluent NHibernate">Gerando arquivos HBM</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/" title="Gerar arquivo SQL do mapeamento com Fluent NHibernate">Gerar arquivo SQL do mapeamento</a></li>
<li>Como funciona o Lazy Load</li>
<li>Configurando Log4NET</li>
</ol>
<p>Nessa segunda etapa vamos criar os mapeamentos entre nossas entidades, para isso vamos seguir o diagrama de classe abaixo:</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/modelo_uml.png"><img class="size-full wp-image-1897 aligncenter" title="Modelo UML" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/modelo_uml.png" alt="" width="432" height="376" /></a></p>
<p>OBS: Esse diagrama é somente didático para exemplificar os mapeamentos usando o Fluent NHibernate</p>
<h2>Criando as Entidades</h2>
<p><strong>Classe Departamento</strong></p>
<p>A classe Departamento tem uma relação com a classe Pessoa de 1..*, por esse motivo na classe Departamento criamos uma lista de Pessoas</p>
<pre class="brush: csharp; title: ; notranslate">
public class Departamento
{
    public virtual int Codigo { get; set; }
    public virtual string Nome { get; set; }
    public virtual string Descricao { get; set; }
    public virtual DateTime DataCadastro { get; set; }
    public virtual IList&lt;Pessoa&gt; Pessoas { get; set; }

    public Departamento()
    {
        this.Pessoas = new List&lt;Pessoa&gt;();
    }
}
</pre>
<p><strong>Classe Grupo</strong></p>
<p>A classe Grupo também tem uma relação com a classe Pessoa de 1..*, por esse motivo na classe Grupo também criamos uma lista de Pessoas</p>
<pre class="brush: csharp; title: ; notranslate">
public class Grupo
{
    public virtual int Codigo { get; set; }
    public virtual string Nome { get; set; }
    public virtual string Descricao { get; set; }
    public virtual DateTime DataCadastro { get; set; }
    public virtual IList&lt;Pessoa&gt; Pessoas { get; set; }

    public Grupo()
    {
        this.Pessoas = new List&lt;Pessoa&gt;();
    }
}
</pre>
<p><strong>Classe Status</strong></p>
<p>A classe Status é bem simples, só possui os enumeradores</p>
<pre class="brush: csharp; title: ; notranslate">
public enum Status
{
    Ativo = 1,
    Inativo = 2,
    Bloqueado = 3
}
</pre>
<p><strong>Classe Telefone</strong></p>
<p>A classe Departamento tem uma relação com a classe Pessoa de 0..1, por esse motivo na classe Telefone criamos uma refência para a classe Pessoa</p>
<pre class="brush: csharp; title: ; notranslate">
public class Telefone
{
    public virtual int Codigo { get; set; }
    public virtual int CodigoDdd { get; set; }
    public virtual int Numero { get; set; }
    public virtual Pessoa Pessoa { get; set; }
}
</pre>
<p><strong>Classe Pessoa</strong></p>
<p>A classe Pessoa é a classe que tem mais depedências</p>
<ol>
<li>Relação com a classe Status</li>
<li>Relação de 0..1 com a classe Departamento</li>
<li>Relação de 1..* com a classe Grupo</li>
<li>Relação de 1..* com a classe Telefone</li>
</ol>
<pre class="brush: csharp; title: ; notranslate">
public class Pessoa
{
    public virtual int Codigo { get; set; }
    public virtual string Nome { get; set; }
    public virtual string Endereco { get; set; }
    public virtual string Cep { get; set; }
    public virtual string Email { get; set; }
    public virtual DateTime DataCadastro { get; set; }

    public virtual Status Status { get; set; }
    public virtual Departamento Departamento { get; set; }
    public virtual IList&lt;Grupo&gt; Grupos { get; set; }
    public virtual IList&lt;Telefone&gt; Telefones { get; set; }

    public Pessoa()
    {
        this.Grupos = new List&lt;Grupo&gt;();
        this.Telefones = new List&lt;Telefone&gt;();
    }
}
</pre>
<p><strong>Classe PessoaFisica</strong></p>
<p>A classe PessoaFisica apenas herda da classe pai Pessoa</p>
<pre class="brush: csharp; title: ; notranslate">
public class PessoaFisica : Pessoa
{
    public virtual string Cpf { get; set; }
    public virtual string Nacionalidade { get; set; }
}
</pre>
<p><strong>Classe PessoaJuridica</strong></p>
<p>A classe PessoaJuridica apenas herda da classe pai Pessoa</p>
<pre class="brush: csharp; title: ; notranslate">
public class PessoaJuridica : Pessoa
{
    public virtual string Cnpj { get; set; }
    public virtual string WebSite { get; set; }
}
</pre>
<p>Até nesse momento não foi feito nenhum mapeamento, somente programação orientado a objetos</p>
<p><strong>OBS 1:</strong> Note que todos nossos atributos estão como <strong>virtual</strong>, isso ocorre porque o NHibernate precisa para ler os atributos</p>
<p><strong>OBS 2:</strong> Note que todas nossas listas estamos inicilizando no contrutor</p>
<h2>Criando os Mapeamentos</h2>
<p><strong>Tipos de mapeamentos</strong></p>
<ol>
<li>HasMany &#8211; one-to-many</li>
<p> &#8211; Quando tem um relacionamento uma para muitos</p>
<li>HasManyToMany &#8211; many-to-many</li>
<p> &#8211; Quando tem um relacionamento muitos para muitos</p>
<li>References &#8211; many-to-one</li>
<p> &#8211; Quando tem um relacionamento muitos para um
</ol>
<p>Para criar os mapeamentos temos que prestar atenção em alguns aspectos:</p>
<ol>
<li>Por padrão para cada entidade, temos uma classe Map (Ex: Pessoa -&gt; PessoaMap)</li>
<li>Nossas classe Map tem que herdar de ClassMap, SubClassMap</li>
<li>A definição do mapeamento deve ficar no construtor da classe Map</li>
</ol>
<p><strong>Classe DepartamentoMap</strong></p>
<pre class="brush: csharp; title: ; notranslate">
public class DepartamentoMap : ClassMap&lt;Departamento&gt;
{
    public DepartamentoMap()
    {
        Id(x =&gt; x.Codigo).GeneratedBy.Identity();

        Map(x =&gt; x.Nome)
            .Not.Nullable()
            .Length(255);

        Map(x =&gt; x.Descricao)
            .Length(255);

        Map(x =&gt; x.DataCadastro)
            .Not.Nullable();

        HasMany(m =&gt; m.Pessoas);
    }
}
</pre>
<p>Linha 1: Veja que nossa classe DepartamentoMap está herdando de <strong>ClassMap</strong></p>
<p>Linha 5: Veja que estamos gerando a nossa chave primária com a função<strong> Id</strong>, onde será um identity</p>
<p>Linha 7: Mapeamos o campo Nome e configuramos que esse campo será NotNull e possui um tamanho de 255</p>
<p>Linha 17: Aqui usamos a função <strong>HasMany</strong> para configurar que a entidade Departamento tem uma referência de <strong>um para muitos</strong> com a entidade Pessoa</p>
<p><strong>Classe GrupoMap</strong></p>
<pre class="brush: csharp; title: ; notranslate">
public class GrupoMap : ClassMap&lt;Grupo&gt;
{
    public GrupoMap()
    {
        Id(x =&gt; x.Codigo).GeneratedBy.Identity();

        Map(x =&gt; x.Nome)
            .Not.Nullable()
            .Length(255);

        Map(x =&gt; x.Descricao)
            .Length(255);

        Map(x =&gt; x.DataCadastro)
            .Not.Nullable();

        HasManyToMany(x =&gt; x.Pessoas);
    }
}
</pre>
<p>Linha 17: Aqui estamos usando outra função <strong>HasManyToMany</strong> para configurar que a entidade Grupo tem uma referência de <strong>muitos para muitos</strong> com a entidade Pessoa</p>
<p><strong>Classe TelefoneMap</strong></p>
<pre class="brush: csharp; title: ; notranslate">
public class TelefoneMap : ClassMap&lt;Telefone&gt;
{
    public TelefoneMap()
    {
        Id(x =&gt; x.Codigo).GeneratedBy.Identity();

        Map(x =&gt; x.CodigoDdd)
            .Not.Nullable()
            .Length(255);

        Map(x =&gt; x.Numero)
            .Not.Nullable();

        References(x =&gt; x.Pessoa);
    }
}
</pre>
<p>Linha 14: Aqui usamos a função <strong>References</strong> para configurar a entidade Telefone tem uma refência de <strong></strong>com a entidade Pessoa</p>
<p><strong>Classe PessoaMap</strong></p>
<pre class="brush: csharp; title: ; notranslate">
public class PessoaMap : ClassMap&lt;Pessoa&gt;
{
    public PessoaMap()
    {
        Id(x =&gt; x.Codigo)
            .GeneratedBy.Identity();

        Map(x =&gt; x.Nome)
            .Not.Nullable()
            .Length(255);

        Map(x =&gt; x.Endereco)
            .Length(255);

        Map(x =&gt; x.Cep)
            .Length(255);

        Map(x =&gt; x.Email)
            .Length(255);

        Map(x =&gt; x.DataCadastro)
            .Not.Nullable();

        Map(x =&gt; x.Status)
            .CustomType&lt;int&gt;();

        References(x =&gt; x.Departamento)
            .Not.Nullable();

        HasManyToMany(x =&gt; x.Grupos);

        HasMany(x =&gt; x.Telefones).Cascade.All();
    }
}
</pre>
<p>Linha 24: Usamos um CustomType para mapear o tipo Enum</p>
<p>LInha 27: Aqui usamos a função <strong>References</strong> para configurar a entidade Pessoa possui uma refência com a entidade Departamento</p>
<p>Linha 30: Aqui estamos usando a função <strong>HasManyToMany</strong> para configurar que a entidade Pessoa tem uma referência de <strong>muitos para muitos</strong> com a entidade Grupos</p>
<p>Linha 32: Aqui usamos a função <strong>HasMany</strong> para configurar que a entidade Pessoa tem uma referência de <strong>um para muitos</strong> com a entidade Telefone. Também estamos usando a opção cascade que quando deletar uma pessoa vamos deletar seus telefones</p>
<p><strong>Classe PessoaFisicaMap</strong></p>
<pre class="brush: csharp; title: ; notranslate">
public class PessoaFisicaMap : SubclassMap&lt;PessoaFisica&gt;
{
    public PessoaFisicaMap()
    {
        Map(x =&gt; x.Cpf)
            .Not.Nullable()
            .Length(14);

        Map(x =&gt; x.Nacionalidade)
            .Length(255);
    }
}
</pre>
<p>Linha 1: Como a classe PessoaFisica herda de Pessoa, em nosso mapeamento tem os que herdar de SubclassMap</p>
<p><strong>Classe PessoaJuridicaMap</strong></p>
<pre class="brush: csharp; title: ; notranslate">
public class PessoaJuridicaMap : SubclassMap&lt;PessoaJuridica&gt;
{
    public PessoaJuridicaMap()
    {
        Map(x =&gt; x.Cnpj)
            .Not.Nullable()
            .Length(18);

        Map(x =&gt; x.WebSite)
            .Length(255);
    }
}
</pre>
<p>Linha 1: Como a classe PessoaJuridica herda de Pessoa, em nosso mapeamento tem os que herdar de SubclassMap</p>
<h2>Gerando o banco</h2>
<p>Agora para ver se todo nosso mapeamento esta correto, vamos gerar o nosso banco a partir dos mapeamentos</p>
<p>Veja o código abaixo:</p>
<pre class="brush: csharp; title: ; notranslate">
public static void CriarTabelasBanco()
{
    FluentConfiguration configuration = Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2008.ConnectionString(x =&gt; x.FromConnectionStringWithKey(&quot;ConexaoBanco&quot;)).ShowSql())
        .ExposeConfiguration(cfg =&gt; new SchemaExport(cfg).Create(true,true))
        .Mappings(x =&gt; x.FluentMappings.AddFromAssemblyOf&lt;Pessoa&gt;());

    configuration.BuildSessionFactory();
}
</pre>
<p>Linha 3: Iniciamos a classe de configuração do Fluent</p>
<p>Linha 4: Configurações para base de dados (Banco, String de conexão)</p>
<p>Linha 5: Para executar nosso mapeamento no banco, temos que instanciar a classe SchemaExport e executar o método Create</p>
<p>Linha 6: Temos que dizer onde esta os nossos mapeamentos, não precisa adicionar todos as entidades, apenas uma, dessa forma o Fluent ja sabe onde está o assembly com os mapeamentos</p>
<p>Linha 8: Executamos a configuração</p>
<p>Veja o resultado na imagem abaixo:</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabelas.png"><img class="aligncenter size-full wp-image-1933" title="Tabelas criadas" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/tabelas.png" alt="" width="426" height="357" /></a></p>
<h3>Atenção:</h3>
<p> veja que foi criada uma tabela para o mapeamento ManyToMany chamada <strong>GruposToPessoas</strong></p>
<p><a title="Download" href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/LeandroPrado.FluentNHibernate_Parte1.zip" target="_blank">Download do projeto</a></p>
<p>Em nosso próximo post vamos começar a criar os CRUDs para ver se nossos mapeamentos estão corretos</p>
<p>Deixe seu comentário, opinião, critica</p>
<p>Aquele abraço!</p>
<h2  class="related_post_title">Leia mais</h2><ul class="related_post"><li><a href="http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/" title="Usando o Fluent NHibernate">Usando o Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/" title="Começando com Fluent NHibernate">Começando com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/" title="Gerando arquivos HBM com Fluent NHibernate">Gerando arquivos HBM com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/" title="Gerar arquivo SQL do mapeamento com Fluent NHibernate">Gerar arquivo SQL do mapeamento com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2011/12/top-10-posts-de-2011/" title="Top 10 Posts de 2011">Top 10 Posts de 2011</a></li><li><a href="http://www.leandroprado.com.br/2010/12/veja-os-posts-mais-vistos-em-2010/" title="Top 10 Posts de 2010">Top 10 Posts de 2010</a></li><li><a href="http://www.leandroprado.com.br/2010/11/mapeamento-many-to-many-com-nhibernate/" title="Mapeamento Many to Many com NHibernate">Mapeamento Many to Many com NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2010/11/mapeamento-one-to-many-com-nhibernate/" title="Mapeamento One to Many com NHibernate">Mapeamento One to Many com NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2010/10/crud-com-entity-framework-e-asp-net-mvc/" title="CRUD com Entity Framework e ASP NET MVC">CRUD com Entity Framework e ASP NET MVC</a></li><li><a href="http://www.leandroprado.com.br/2010/10/usando-nhibernate-com-asp-net-mvc/" title="Usando NHibernate com ASP NET MVC">Usando NHibernate com ASP NET MVC</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Começando com Fluent NHibernate</title>
		<link>http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=comecando-com-fluent-nhibernate</link>
		<comments>http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 12:05:25 +0000</pubDate>
		<dc:creator>Leandro Prado</dc:creator>
				<category><![CDATA[Fluent NHibernate]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://www.leandroprado.com.br/?p=1472</guid>
		<description><![CDATA[Pessoal, Como já vimos aqui no blog  com é trabalhoso ficar gerando arquivos de mapeamento em XML, hoje estarei começando uma nova série de posts sobre Fluent NHibernate que contemplara as seguintes...]]></description>
			<content:encoded><![CDATA[<p>Pessoal,</p>
<p>Como já vimos <a title="NHibernate" href="http://www.leandroprado.com.br/category/nhibernate/" target="_blank">aqui no blog</a>  com é trabalhoso ficar gerando arquivos de mapeamento em XML, hoje estarei começando uma nova série de posts sobre Fluent NHibernate que contemplara as seguintes tópicos.</p>
<ol>
<li><a title="Começando com Fluent NHibernate" href="http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/" target="_blank">Começando com Fluent NHibernate</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/" title="Mapeamentos com Fluent NHibernate">Mapeamentos com Fluent NHibernate</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/" title="Usando o Fluent NHibernate">Usando o Fluent NHibernate</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/" title="Gerando arquivos HBM com Fluent NHibernate">Gerando arquivos HBM</a></li>
<li><a href="http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/" title="Gerar arquivo SQL do mapeamento com Fluent NHibernate">Gerar arquivo SQL do mapeamento</a></li>
<li>Como funciona o Lazy Load</li>
<li>Configurando Log4NET</li>
</ol>
<h2>O que é Fluent NHibernate?</h2>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/logo_fluent_nhibernate.png"><img class="alignleft size-medium wp-image-1912" title="logo_fluent_nhibernate" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/logo_fluent_nhibernate-300x97.png" alt="" width="300" height="97" /></a>Fluent NHibernate é uma biblioteca para auxilia na realização dos mapeamentos das suas entidades com o banco de dados. Por padrão o NHibernate usa arquivos xml (.hbm) para realizar esse mapeamento, porém criar esses arquivos manualmente gera um bom trabalho, para isso foi criada o Fluent NHibernate que podemos realizar esse mapeamento pelo próprio código sem precisar de usar os arquivos HBM.</p>
<p>Veja abaixo a diferença entre criar um mapeamento XML e um mapeamento usando o Fluent</p>
<p><strong>XML</strong></p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/xml.png"><img class="alignnone  wp-image-1892" title="Mapeamento xom XML" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/xml.png" alt="" width="599" height="336" /></a></p>
<p><strong>Fluent</strong></p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/fluent.png"><img class="alignnone size-full wp-image-1893" title="Mapeamento com Fluent" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/fluent.png" alt="" width="429" height="218" /></a></p>
<h2>Como Instalar?</h2>
<p>Para começar a usar a biblioteca Fluent NHibernate em nosso projeto, temos três processos de instalação:</p>
<p><strong>1) NuGet</strong></p>
<p>Basta abrir o Package Manager Console (View -&gt; Other Windows -&gt; Package Manager Console) e digitar a linha de comando <strong>Install-Package FluentNHibernate</strong> conforme abaixo:</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/add_fluent_nhibernate.png"><img class="alignnone  wp-image-1881" title="Adicionar o Fluent NHibernate no projeto" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/add_fluent_nhibernate.png" alt="" width="592" height="445" /></a></p>
<p><strong>2) Manual</strong></p>
<p>Para baixar manualmente, devemos entrar na página <a title="Fluent NHibernate" href="http://fluentnhibernate.org/" target="_blank">http://fluentnhibernate.org/</a> selecionar a última versão e fazer o download. Depois temos que adicionar as referências das DLLs em nosso projeto.</p>
<p><strong>3) Código fonte</strong></p>
<p>Baixar o código do repositorio GIT <a title="http://github.com/jagregory/fluent-nhibernate" href="http://github.com/jagregory/fluent-nhibernate" rel="nofollow">http://github.com/jagregory/fluent-nhibernate</a> compilar e adicionar as referências</p>
<p>Veja abaixo como esta a estrutura no nosso projeto</p>
<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2012/01/references.png"><img class="alignnone size-full wp-image-1885" title="Referências das bibliotecas que precisamos" src="http://www.leandroprado.com.br/wp-content/uploads/2012/01/references.png" alt="" width="290" height="282" /></a></p>
<p>Em nosso próximo post vamos começar a criar os mapeamentos das nossas entidades.</p>
<p>Deixe seu comentário, opinião, critica</p>
<p>Aquele abraço!</p>
<h2  class="related_post_title">Leia mais</h2><ul class="related_post"><li><a href="http://www.leandroprado.com.br/2012/01/usando-o-fluent-nhibernate/" title="Usando o Fluent NHibernate">Usando o Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/mapeamentos-com-fluent-nhibernate/" title="Mapeamentos com Fluent NHibernate">Mapeamentos com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/gerando-arquivos-hbm-com-fluent-nhibernate/" title="Gerando arquivos HBM com Fluent NHibernate">Gerando arquivos HBM com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2012/01/gerar-arquivo-sql-do-mapeamento-com-fluent-nhibernate/" title="Gerar arquivo SQL do mapeamento com Fluent NHibernate">Gerar arquivo SQL do mapeamento com Fluent NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2011/12/top-10-posts-de-2011/" title="Top 10 Posts de 2011">Top 10 Posts de 2011</a></li><li><a href="http://www.leandroprado.com.br/2010/12/veja-os-posts-mais-vistos-em-2010/" title="Top 10 Posts de 2010">Top 10 Posts de 2010</a></li><li><a href="http://www.leandroprado.com.br/2010/11/mapeamento-many-to-many-com-nhibernate/" title="Mapeamento Many to Many com NHibernate">Mapeamento Many to Many com NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2010/11/mapeamento-one-to-many-com-nhibernate/" title="Mapeamento One to Many com NHibernate">Mapeamento One to Many com NHibernate</a></li><li><a href="http://www.leandroprado.com.br/2010/10/crud-com-entity-framework-e-asp-net-mvc/" title="CRUD com Entity Framework e ASP NET MVC">CRUD com Entity Framework e ASP NET MVC</a></li><li><a href="http://www.leandroprado.com.br/2010/10/usando-nhibernate-com-asp-net-mvc/" title="Usando NHibernate com ASP NET MVC">Usando NHibernate com ASP NET MVC</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.leandroprado.com.br/2012/01/comecando-com-fluent-nhibernate/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Top 10 Posts de 2011</title>
		<link>http://www.leandroprado.com.br/2011/12/top-10-posts-de-2011/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=top-10-posts-de-2011</link>
		<comments>http://www.leandroprado.com.br/2011/12/top-10-posts-de-2011/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 12:59:41 +0000</pubDate>
		<dc:creator>Leandro Prado</dc:creator>
				<category><![CDATA[ASP NET MVC 3]]></category>
		<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[EXTJS]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[ext js]]></category>
		<category><![CDATA[Razor]]></category>

		<guid isPermaLink="false">http://www.leandroprado.com.br/?p=1863</guid>
		<description><![CDATA[Pessoal Segue abaixo os posts mais acessados no ano de 2011 1. CRUD usando ExtJs e ASP NET MVC 3 &#124; 4.435 2. ASP NET MVC + NHibernate + ExtJs...]]></description>
			<content:encoded><![CDATA[<p>Pessoal</p>
<p>Segue abaixo os posts mais acessados no ano de 2011</p>
<p>1. <a title="CRUD usando ExtJs e ASP NET MVC 3" href="http://www.leandroprado.com.br/2011/06/crud-usando-extjs-e-asp-net-mvc-3/" target="_blank">CRUD usando ExtJs e ASP NET MVC 3</a> | 4.435</p>
<p>2. <a title="ASP NET MVC + NHibernate + ExtJs – Parte 1" href="http://www.leandroprado.com.br/2010/07/asp-net-mvc-nhibernate-extjs-parte-1/" target="_blank">ASP NET MVC + NHibernate + ExtJs – Parte 1</a> | 3.007</p>
<p>3. <a title="CRUD com Entity Framework e ASP NET MVC" href="http://www.leandroprado.com.br/2010/10/crud-com-entity-framework-e-asp-net-mvc/" target="_blank">CRUD com Entity Framework e ASP NET MVC</a> | 2.993</p>
<p>4. <a title="Usando ExtJs GridPanel com ASP NET MVC 3" href="http://www.leandroprado.com.br/2011/04/usando-extjs-gridpanel-com-asp-net-mvc-3/" target="_blank">Usando ExtJs GridPanel com ASP NET MVC 3</a> | 2.902</p>
<p>5. <a title="Usando o Razor com ASP NET MVC 3" href="http://www.leandroprado.com.br/2011/02/usando-o-razor-com-asp-net-mvc-3/" target="_blank">Usando o Razor com ASP NET MVC 3</a> | 2.764</p>
<p>6. <a title="Criando um formulário com ExtJs e ASP NET MVC 3" href="http://www.leandroprado.com.br/2011/04/criando-um-formulario-com-extjs-e-asp-net-mvc-3/" target="_blank">Criando um formulário com ExtJs e ASP NET MVC 3</a> | 2.522</p>
<p>7. <a title="Criando HTML Helpers para ASP NET MVC 3" href="http://www.leandroprado.com.br/2011/02/criando-html-helpers-para-asp-net-mvc-3/" target="_blank">Criando HTML Helpers para ASP NET MVC 3</a> | 2.280</p>
<p>8. <a title="ASP NET MVC 3 com Entity Framework Code First" href="http://www.leandroprado.com.br/2011/05/asp-net-mvc-3-com-entity-framework-code-first/" target="_blank">ASP NET MVC 3 com Entity Framework Code First</a> | 2.111</p>
<p>9. <a title="Usando WebGrid com ASP NET MVC 3" href="http://www.leandroprado.com.br/2011/02/usando-webgrid-com-asp-net-mvc-3-3/" target="_blank">Usando WebGrid com ASP NET MVC 3</a> | 2.014</p>
<p>10. <a title="ASP NET MVC + NHibernate + ExtJs – Parte 3" href="http://www.leandroprado.com.br/2010/08/asp-net-mvc-nhibernate-extjs-parte-3/" target="_blank">ASP NET MVC + NHibernate + ExtJs – Parte 3</a> | 1.919</p>
<p>Estatísticas retiradas do Google Analytics</p>
<p>Aquele Abraço!</p>
<h2  class="related_post_title">Leia mais</h2><ul class="related_post"><li><a href="http://www.leandroprado.com.br/2010/12/veja-os-posts-mais-vistos-em-2010/" title="Top 10 Posts de 2010">Top 10 Posts de 2010</a></li><li><a href="http://www.leandroprado.com.br/2011/06/crud-usando-extjs-e-asp-net-mvc-3/" title="CRUD usando ExtJs e ASP NET MVC 3">CRUD usando ExtJs e ASP NET MVC 3</a></li><li><a href="http://www.leandroprado.com.br/2011/05/asp-net-mvc-3-com-entity-framework-code-first/" title="ASP NET MVC 3 com Entity Framework Code First">ASP NET MVC 3 com Entity Framework Code First</a></li><li><a href="http://www.leandroprado.com.br/2011/04/usando-extjs-gridpanel-com-asp-net-mvc-3/" title="Usando ExtJs GridPanel com ASP NET MVC 3">Usando ExtJs GridPanel com ASP NET MVC 3</a></li><li><a href="http://www.leandroprado.com.br/2011/04/criando-um-formulario-com-extjs-e-asp-net-mvc-3/" title="Criando um formulário com ExtJs e ASP NET MVC 3">Criando um formulário com ExtJs e ASP NET MVC 3</a></li><li><a href="http://www.leandroprado.com.br/2011/02/criando-html-helpers-para-asp-net-mvc-3/" title="Criando HTML Helpers para ASP NET MVC 3">Criando HTML Helpers para ASP NET MVC 3</a></li><li><a href="http://www.leandroprado.com.br/2011/02/usando-o-razor-com-asp-net-mvc-3/" title="Usando o Razor com ASP NET MVC 3">Usando o Razor com ASP NET MVC 3</a></li><li><a href="http://www.leandroprado.com.br/2011/02/novidades-do-asp-net-mvc-3/" title="Novidades do ASP NET MVC 3">Novidades do ASP NET MVC 3</a></li><li><a href="http://www.leandroprado.com.br/2010/09/serie-asp-net-mvc-com-nhibernate-e-extjs/" title="Série ASP NET MVC com NHibernate e ExtJS">Série ASP NET MVC com NHibernate e ExtJS</a></li><li><a href="http://www.leandroprado.com.br/2010/09/asp-net-mvc-nhibernate-extjs-parte-7/" title="ASP NET MVC + NHibernate + ExtJs – Parte 7">ASP NET MVC + NHibernate + ExtJs – Parte 7</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.leandroprado.com.br/2011/12/top-10-posts-de-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tchau 2011</title>
		<link>http://www.leandroprado.com.br/2011/12/tchau-2011/#utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tchau-2011</link>
		<comments>http://www.leandroprado.com.br/2011/12/tchau-2011/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 15:53:52 +0000</pubDate>
		<dc:creator>Leandro Prado</dc:creator>
				<category><![CDATA[Final de Ano]]></category>
		<category><![CDATA[ano novo]]></category>
		<category><![CDATA[natal]]></category>

		<guid isPermaLink="false">http://www.leandroprado.com.br/?p=1852</guid>
		<description><![CDATA[É pessoal.. o ano de 2011 acabou&#8230; o que tinha que ser feito, foi feito, e o que não foi feito ficará para o próximo ano! O ano de 2011...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.leandroprado.com.br/wp-content/uploads/2011/12/churras.jpg"><img class="alignleft size-medium wp-image-1869" title="churras" src="http://www.leandroprado.com.br/wp-content/uploads/2011/12/churras-300x225.jpg" alt="" width="300" height="225" /></a>É pessoal.. o ano de 2011 acabou&#8230; o que tinha que ser feito, foi feito, e o que não foi feito ficará para o próximo ano!</p>
<p>O ano de 2011 certamente ficará marcado na história, foi um ano muito bom com vários acontecimentos mundiais e tecnológicos.</p>
<p>O ano de 2011 foi de muito trabalho e de muito aprendizado tive várias preocupações, entregas de vários projetos, noites sem dormir arquitetando o que poderia ser melhorado, várias viagens para Brasília onde minha cabeça não parava de pensar!</p>
<p>O ano de 2011 foi meu primeiro ano no TechEd Brasil e como foi bom!! muitos contatos e muito aprendizado, certamente em 2012 estarei lá denovo!!!</p>
<p>O ano de 2011 foi onde o meu time do coração, COXA, mostrou para o Brasil como um time retorna das cinzas e bate vários recordes, e ainda por cima comemoramos a queda no nosso rival, mais conhecido como PATÉTICOS</p>
<p>O ano de 2011 consegui me recuperar (90%) do acidente e voltei a jogar o belo futebol com os Criados com o Vó</p>
<p>O ano de 2011 ficou marcado pela morte do Steve Jobs que contribui muito para o mobile estar hoje aonde está!</p>
<p>O ano de 2011 foi quando eu troquei de carro (tchau gol..) e agora só falta pagar o novo&#8230;</p>
<p>Resumindo o ano de 2011, foi o ano da pressão</p>
<p>Agradeço a todos que vieram nesse blog comentaram os posts, me criticaram, me ensinaram, por isso que continuo escrevendo!!</p>
<p>Obrigado ao pessoal da TechResult, CINQ e Sebrae pelo apoio, paciência e companheirismo nos projetos, certamente 2012 será melhor!</p>
<p>Desejo a todos um FELIZ NATAL e um FELIZ ANO NOVO e que venha 2012 que certamente estaremos preparados!!</p>
<p>Aquele abraço!</p>
<h2  class="related_post_title">Leia mais</h2><ul class="related_post"><li><a href="http://www.leandroprado.com.br/2010/12/feliz-natal-feliz-ano-novo/" title="Feliz Natal, Feliz Ano Novo!">Feliz Natal, Feliz Ano Novo!</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.leandroprado.com.br/2011/12/tchau-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

