quinta-feira, 29 de julho de 2010
Busca  
Porta 80 Web Hosting
 :: Acessibilidade
Ir para conteúdo principal: ALT + 1
 :: Participe
Seja um autor de CD/DVD de Treinamento
Publique um artigo
Publique uma oportunidade
Publique uma notícia
Publique um curso
Publique uma dica
Publique um código
 :: Informativo
Receba nossos informativos por e-mail.
E-mail:   
 
Digite a palavra abaixo:  
 
 
 :: Oportunidades
Cadastrar oportunidades
Gerenciar suas oportunidades
Cadastrar nova empresa
 :: Especiais
Básico de C++
C++ Builder
Curso ASP.NET 3.5 em VB.NET e C#
Guia Prático de HTML
Testes com Visual Studio Team System 2008
 :: Desenvolvimento
ActionScript
ADO.NET
ASP
ASP.NET
Automação Comercial
C#
C/C++
Coldfusion
CSS
Delphi
Disp. Móveis
HTML
Java
Javascript
LSL (Second Life)
Modelagem
PHP
Python
Sharepoint
Silverlight
SQL
VBA (Office)
Visual Basic
Visual Basic .NET
Visual Fox Pro
WCF/WPF
Web Services
XML
 :: Infra
BizTalk Server
CRM
Exchange Server
ForeFront / Antigen / IAG
Interoperabilidade
ISA Server
Linux
MOF
MS Dynamics CRM
Network
OCS / LCS
Outlook
Powershell e Scripts
Redes
Segurança
System Center e Gerenciamento
Virtualização
Windows
Windows Server
 :: Banco de Dados
Access
Caché
Firebird
Interbase
MySQL
Oracle
SQL Server
Sybase
 :: Gerência
Arquitetura
Ciclo de Vida de Desenvolvimento
Controle de Versão
Estimativas
Metodologias
MOF
Qualidade e Testes
 :: Design
Corel
Flash
Photopaint
Photoshop
 :: Livros
Análise Sistemas
Aplicativos
Banco de Dados
Certificação
Design e CAD
Gerência
Hardware
Internet
Programação
Programação Web
Rede
Segurança
Servidores
Sistemas Operacionais
 :: CDs/DVDs
Desenvolvimento
Infra
Design
 :: E-Books
.NET 2.0 (VS 2005)
.NET 1.1 (VS 2003)
SQL Server
Excel 2007
Excel 2003
Access 2003
ASP 3.0
Delphi
Java
Artigos
Criando uma aplicação Web em C# usando o NHibernate
Por: Marcos Dell Antonio
[Entre em contato com o autor ]
Profissional certificado (MCPD, MCTS e MCP) em tecnologias da Microsoft e especialista em .NET e Visual Studio Team System. Site: www.marcosdellantonio.net.
Feed de artigos.
Feed de artigos deste autor.
Gere seu feed personalizado  
Criando uma aplicação Web em C# usando o NHibernate
Publicado em: 23/01/2006

Apresento neste artigo como criar uma aplicação web totalmente orientada a objetos usando o framework NHibernate e a linguagem C#.

Nossa meta é construir um website com um cadastro de atividades usando os novos controles GridView e ObjectDataSource, ambos presentes no Framework .NET 2.0. A aplicação possuirá as funcionalidades básicas de um cadastro, sendo elas: consultar, inserir, editar e remover. Um detalhe muito importante é que nenhuma linha de código SQL será escrita devido ao uso do NHibernate.

Para desenvolver esta aplicação vamos usar as seguintes ferramentas:

- Visual Studio 2005 (pode ser o Visual Web Developer 2005 Express Edition)
Link: http://msdn.microsoft.com/vstudio/express/vwd/

- MySQL 5.0 Community Edition
Link: http://dev.mysql.com/downloads/mysql/5.0.html

- MySQL Connector 1.0.7: provider pra acessar o MySQL
Link: http://dev.mysql.com/downloads/connector/net/1.0.html

- MyGeneration 1.1.5.1: ferramenta para gerar o mapeamento objeto/relacional para o NHibernate
Link: http://www.mygenerationsoftware.com

- NHibernate 1.0.2: framework para persistência dos objetos
Link: http://www.nhibernate.org

- Instalação e configuração das ferramentas

Depois de fazer o download de todas as ferramentas citadas acima, instale o MySQL, crie um banco de dados chamado WebAppOO e uma tabela chamada Atividade com os seguintes campos:

- Id - Int (primary key)
- Nome - Varchar(50), Not null
- Descrição - Varchar(200), Not null

Deve ficar assim:

Agora instale o provider do MySQL e o MyGeneration. Não vou cobrir a configuração do MyGeneration, para isso veja nas referências desse artigo a documentação sobre o assunto.

O próximo passo é descompactar o NHibernate em uma pasta qualquer.

- Criando a aplicação

Abra o Visual Studio e crie uma nova solução chamada ProjetoWeb. Para isso, clique em File - New - Project - Other Project Types - Visual Studio Solutions e escolha o template Blank Solution. Chame a solução de ProjetoWeb e defina a localização (de preferência a mesma do artigo). Veja:

Clique no botão OK e uma solução vazia será criada. Agora crie um website, clicando com o botão direito do mouse sobre a solução recém criada, escolha Add - New Web Site. Deixe selecionado o template ASP.NET Web Site e na localização coloque c:\ProjetosVS\ProjetoWeb\WebAppOO. Deve ficar da seguinte forma:

Clique em OK para criar o website. Agora vamos montar a nossa interface. Deixe o arquivo Default.aspx com a seguinte aparência:

Os controles mais importantes são o GridView e o ObjectDataSource. Repare que somente adicionei os controles na tela e configurei o nome deles, ainda não fiz nenhuma ligação entre eles. O hyperlink Inserir Atividade aponta para o arquivo InserirAtividade.aspx.





MS TechEd 2010



 

Inclua um comentário sobre o artigo Topo
Elogios e críticas são muito bem vindos, porém o comentário deve ter referência ao artigo em pauta.
O portal e o autor agradecem.
Nome:    
E-mail:      
Comentários:    
Digite a palavra abaixo:  
Para dúvidas técnicas, NÃO UTILIZE ESTE ESPAÇO, utilize nosso fórum de discussão.
http://linhadecodigo.com.br/cs2/forum
 
Comentários sobre o artigo Ver Todos comentários
Alguns de meus colegas, tiveram problemas para executar este tutorial pois no momento da execução estava ocorrendo o erro:
Exception Details: NHibernate.QueryException: unexpected token: as [FROM Atividade AS atividade]
tive o mesmo problema e consegui resolve-lo apenas marcando a propriedade "Build Action" do arquivo "Atividade.hbm.xml" para "Embedded Resource" conforme descrito no tutorial acima.
Espero ter ajudado.
Quem enviou: Marcio Cesar Gonzaga
Postado em: 16/2/2010 0:00:00
Parabens pelo artigo. me ajudop até d +. agora estou com o mesmo problema do nosso amigo Rubens de Souza vieira.

Exception Details: NHibernate.QueryException: unexpected token: as [FROM Atividade AS atividade]

Source Error:


Line 33: query.SetMaxResults(maximumRows);
Line 34:
Line 35: return query.List();
Line 36:
Line 37: }

alguem pode me ajudar com esse problema?
Quem enviou: Waldemir Júnior
Postado em: 3/3/2008 0:00:00
Fala galera, tudo bem?
Bom, estou tentando usar o NHibernate mas não funciona. A Aplicação não dá erros, mas nada acontece. Vou explicar melhor:
Resgatando Dados: Não dá erro mas não traz nada na consulta, mas há dados na tabela.

Gravando dados:
Não dá Exception mas, no método Flush, ao tentar resgatar o valor do segundo campo, ele trava e não faz mais nada. Parece que ele identifica apenas a coluna que é chave, nesse ele pega o valor normalmente.

Posso estar falando uma grande bobagem, mas parece que ele não identificou o mapeamento que fiz.
Segue a baixo os XMLs de configuração que fiz:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="MapeamentoOR.SegUsuario,MapeamentoOR" table="SEG_USUARIO">

<id name="CodSegUsuario" column="COD_SEG_USUARIO" type="Decimal" unsaved-value="0" >
<generator class="assigned"/>
</id>
<!--
<id name="CodSegUsuario" type="Decimal" unsaved-value="0">
<column name="COD_SEG_USUARIO" sql-type="Decimal" unsaved-value="0" />
<generator class="assigned"/>
</id>
<bag name="SegUsuarioperfilList" inverse="true" lazy="true" >
<key column="COD_SEG_USUARIO" />
<one-to-many class="MapeamentoOR.SegUsuarioperfil,MapeamentoOR" />
</bag>
<bag name="SegUsuarioregraList" inverse="true" lazy="true" >
<key column="COD_SEG_USUARIO" />
<one-to-many class="MapeamentoOR.SegUsuarioregra,MapeamentoOR" />
</bag>
-->
<property column="TEX_NOME" type="String" name="TexNome" not-null="true" length="40" />
<property column="TEX_EMAIL" type="String" name="TexEmail" not-null="true" length="40" />
<property column="TEX_TELEFONE" type="String" name="TexTelefone" length="20" />
<property column="TEX_SENHA" type="String" name="TexSenha" not-null="true" length="40" />
<property column="COD_SEG_USUARIOCRIACAO" type="Decimal" name="CodSegUsuariocriacao" not-null="true" />
<property column="DAT_CRIACAO" type="DateTime" name="DatCriacao" not-null="true" />
<property column="COD_SEG_USUARIOALTERACAO" type="Decimal" name="CodSegUsuarioalteracao" />
<property column="DAT_ALTERACAO" type="DateTime" name="DatAlteracao" />
<property column="DAT_EXPIRACAO" type="DateTime" name="DatExpiracao" />
<property column="IND_ATIVO" type="Decimal" name="IndAtivo" />
<property column="DAT_ULTIMOLOGIN" type="DateTime" name="DatUltimologin" />

</class>
</hibernate-mapping>


Configurando o NHIbernate:
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</configSections>
<nhibernate>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<add key="hibernate.dialect" value="NHibernate.Dialect.OracleDialect"/>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.OracleClientDriver"/>
<!--<add key="hibernate.connection.driver_class" value="System.Data.OracleClient"/>-->
<add key="hibernate.connection.connection_string" value="Data Source=avimed_tst;Persist Security Info=True;User ID=avimed_tst;Password=avimed_tst;Unicode=True"/>
<add key="show_sql" value="True"/>
</nhibernate>

Classe de Usuarios:
/*
insert license info here
*/
using System;
using System.Collections;

namespace MapeamentoOR
{
/// <summary>
/// Generated by MyGeneration using the NHibernate Object Mapping template
/// </summary>
[Serializable]
public class SegUsuario
{

#region Private Members
private bool isChanged;

private decimal cod_seg_usuario;
//private IList SegUsuarioperfilList;
//private IList SegUsuarioregraList;
private string tex_nome;
private string tex_email;
private string tex_telefone;
private string tex_senha;
private decimal cod_seg_usuariocriacao;
private DateTime dat_criacao;
private decimal cod_seg_usuarioalteracao;
private DateTime dat_alteracao;
private DateTime dat_expiracao;
private decimal ind_ativo;
private DateTime dat_ultimologin;
#endregion

#region Default ( Empty ) Class Constuctor
/// <summary>
/// default constructor
/// </summary>
public SegUsuario()
{
cod_seg_usuario = 0;
//SegUsuarioperfilList = new ArrayList();
//SegUsuarioregraList = new ArrayList();
tex_nome = String.Empty;
tex_email = String.Empty;
tex_telefone = String.Empty;
tex_senha = String.Empty;
cod_seg_usuariocriacao = 0;
dat_criacao = DateTime.MinValue;
cod_seg_usuarioalteracao = 0;
dat_alteracao = DateTime.MinValue;
dat_expiracao = DateTime.MinValue;
ind_ativo = 0;
dat_ultimologin = DateTime.MinValue;
}
#endregion // End of Default ( Empty ) Class Constuctor

#region Required Fields Only Constructor
/// <summary>
/// required (not null) fields only constructor
/// </summary>
public SegUsuario(
string tex_nome,
string tex_email,
string tex_senha,
decimal cod_seg_usuariocriacao,
DateTime dat_criacao)
: this()
{
tex_nome = tex_nome;
tex_email = tex_email;
tex_telefone = String.Empty;
tex_senha = tex_senha;
cod_seg_usuariocriacao = cod_seg_usuariocriacao;
dat_criacao = dat_criacao;
cod_seg_usuarioalteracao = 0;
dat_alteracao = DateTime.MinValue;
dat_expiracao = DateTime.MinValue;
ind_ativo = 0;
dat_ultimologin = DateTime.MinValue;
}
#endregion // End Required Fields Only Constructor

#region Public Properties

/// <summary>
///
/// </summary>
public virtual decimal CodSegUsuario
{
get { return cod_seg_usuario; }
set
{
isChanged |= ( cod_seg_usuario != value );
cod_seg_usuario = value;
}

}

//public virtual IList SegUsuarioperfilListMethod
//{
// get
// {
// return SegUsuarioperfilList;
// }
// set
// {
// SegUsuarioperfilList = value;
// }
//}

//public virtual IList SegUsuarioregraListMethod
//{
// get
// {
// return SegUsuarioregraList;
// }
// set
// {
// SegUsuarioregraList = value;
// }
//}

/// <summary>
///
/// </summary>
public virtual string TexNome
{
get { return tex_nome; }

set
{
if( value == null )
throw new ArgumentOutOfRangeException("Null value not allowed for TexNome", value, "null");

if( value.Length > 40)
throw new ArgumentOutOfRangeException("Invalid value for TexNome", value, value.ToString());

isChanged |= (tex_nome != value); tex_nome = value;
}
}

/// <summary>
///
/// </summary>
public virtual string TexEmail
{
get { return tex_email; }

set
{
if( value == null )
throw new ArgumentOutOfRangeException("Null value not allowed for TexEmail", value, "null");

if( value.Length > 40)
throw new ArgumentOutOfRangeException("Invalid value for TexEmail", value, value.ToString());

isChanged |= (tex_email != value); tex_email = value;
}
}

/// <summary>
///
/// </summary>
public virtual string TexTelefone
{
get { return tex_telefone; }

set
{
if( value != null && value.Length > 20)
throw new ArgumentOutOfRangeException("Invalid value for TexTelefone", value, value.ToString());

isChanged |= (tex_telefone != value); tex_telefone = value;
}
}

/// <summary>
///
/// </summary>
public virtual string TexSenha
{
get { return tex_senha; }

set
{
if( value == null )
throw new ArgumentOutOfRangeException("Null value not allowed for TexSenha", value, "null");

if( value.Length > 40)
throw new ArgumentOutOfRangeException("Invalid value for TexSenha", value, value.ToString());

isChanged |= (tex_senha != value); tex_senha = value;
}
}

/// <summary>
///
/// </summary>
public virtual decimal CodSegUsuariocriacao
{
get { return cod_seg_usuariocriacao; }
set
{
isChanged |= ( cod_seg_usuariocriacao != value );
cod_seg_usuariocriacao = value;
}

}

/// <summary>
///
/// </summary>
public virtual DateTime DatCriacao
{
get { return dat_criacao; }
set
{
isChanged |= ( dat_criacao != value );
dat_criacao = value;
}

}

/// <summary>
///
/// </summary>
public virtual decimal CodSegUsuarioalteracao
{
get { return cod_seg_usuarioalteracao; }
set
{
isChanged |= ( cod_seg_usuarioalteracao != value );
cod_seg_usuarioalteracao = value;
}

}

/// <summary>
///
/// </summary>
public virtual DateTime DatAlteracao
{
get { return dat_alteracao; }
set
{
isChanged |= ( dat_alteracao != value );
dat_alteracao = value;
}

}

/// <summary>
///
/// </summary>
public virtual DateTime DatExpiracao
{
get { return dat_expiracao; }
set
{
isChanged |= ( dat_expiracao != value );
dat_expiracao = value;
}

}

/// <summary>
///
/// </summary>
public virtual decimal IndAtivo
{
get { return ind_ativo; }
set
{
isChanged |= ( ind_ativo != value );
ind_ativo = value;
}

}

/// <summary>
///
/// </summary>
public virtual DateTime DatUltimologin
{
get { return dat_ultimologin; }
set
{
isChanged |= ( dat_ultimologin != value );
dat_ultimologin = value;
}

}

/// <summary>
/// Returns whether or not the object has changed it's values.
/// </summary>
public virtual bool IsChanged
{
get { return isChanged; }
}

#endregion

#region Equals And HashCode Overrides
/// <summary>
/// local implementation of Equals based on unique value members
/// </summary>
public override bool Equals( object obj )
{
if( this == obj ) return true;
if( ( obj == null ) || ( obj.GetType() != this.GetType() ) ) return false;
SegUsuario castObj = (SegUsuario)obj;
return ( castObj != null ) &&
( this.cod_seg_usuario == castObj.CodSegUsuario );
}

/// <summary>
/// local implementation of GetHashCode based on unique value members
/// </summary>
public override int GetHashCode()
{

int hash = 57;
hash = 27 * hash * cod_seg_usuario.GetHashCode();
return hash;
}
#endregion
}
}

Classe com os métodos de inserção, edição, etc:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using NHibernate;
using MapeamentoOR;

/// <summary>
/// Summary description for UsuarioDAO
/// </summary>
public class UsuarioDAO
{
public UsuarioDAO()
{
//
// TODO: Add constructor logic here
//
}

public static IList RetornaUsuarios(string column, int maximumRows, int startRowIndex)
{
ISession session = NHibernateHelper.GetSession();
string sql = "FROM MapeamentoOR.SegUsuario AS usuario";

//Sorting
if (!String.IsNullOrEmpty(column))
{
sql += " Order by usuario." + column;
}

IQuery query = session.CreateQuery(sql);

//Paging
query.SetFirstResult(startRowIndex);
query.SetMaxResults(maximumRows);

return query.List();
}

public static void SalvaUsuario(SegUsuario usuario)
{
ISession session = NHibernateHelper.GetSession();
ITransaction transaction = session.BeginTransaction();

session.Save(usuario);

transaction.Commit();

session.Close();
//ISession session = NHibernateHelper.GetSession();
//session.Save(usuario);
//session.Flush();
//session.Close();
}

public static SegUsuario RetornaUsuario(int id)
{
ISession session = NHibernateHelper.GetSession();
return (SegUsuario)session.Get(typeof(SegUsuario), id);
}

public static void ExcluirUsuario(SegUsuario usuario)
{
ISession session = NHibernateHelper.GetSession();
session.Delete(usuario);
session.Flush();
session.Close();
}

public static void AtualizaAtividade(SegUsuario usuario)
{
ISession session = NHibernateHelper.GetSession();
session.Update(usuario);
session.Flush();
session.Close();
}
}

Bão, é isso...
Se alguém puder me ajudar fico muito grato.

Abs

Danilo Lira
Quem enviou: Danilo Lira
Postado em: 29/1/2008 0:00:00
Parabens pelo artigo me tirou muitas duvidas sobre o NHibernate o que eu estava montado aqui com o que consegui no artigo funcionou mais o do artigo esta dando este erro

Poderia me ajudar

Exception Details: NHibernate.QueryException: unexpected token: as [FROM Atividade AS atividade]

Source Error:


Line 33: query.SetMaxResults(maximumRows);
Line 34:
Line 35: return query.List();
Line 36:
Line 37: }

Quem enviou: Rubens de Souza vieira
Postado em: 21/8/2007 0:00:00
Muito bom artigo...

Tem como ao invês de usar o Mysql usar ACCESS ou SQLSERVER??? Alguem poderia me mostrar como???

Abraços

Willian
Quem enviou: Willian
Postado em: 15/3/2007 0:00:00
Parabéns Marcos pelo artigo. Fiz aqui na empresa com Oracle e funcionou na boa. O problema que tive foi com Firebird mas isso deixarei para depois. Usei alguns templates do MyGeneration que já fazem até chave composta. Um abraço.
Quem enviou: Thiago
Postado em: 15/2/2007 0:00:00
Marcos Dell Antonio,

Eu tive o mesmo problema que o Carlos Marian, e segui a recomendação que você passou para ele ("virtual"). Só que para mim está dando erros do tipo:

"''MapeamentoOR.Atividade.Id.get'' is a new virtual member in sealed class ''MapeamentoOR.Atividade'';"

Por que ocorre isso?

Cássio
Quem enviou: Cássio
Postado em: 8/12/2006 0:00:00
Olá Marcelo.

Você possui a dll do Provider do Firebird referenciada no seu projeto?

T+
Quem enviou: Marcos Dell Antonio
Postado em: 18/11/2006 0:00:00
Olá Carlos Marian.

Você deve ter baixado a última versão do NH (1.2.0 Alpha). Ela vem com o lazy-loading habilitado por default.

Desta forma, deves declarar os métodos get/set da seguinte maneira:

public virtual string XXX
{
get { ... }
set { ... }
}

Em outras palavras, eles devem ser "virtuais".

Até +.
Quem enviou: Marcos Dell Antonio
Postado em: 18/11/2006 0:00:00
Could not load type ''NHibernate.Dialect.FireBirdDialect, NHibernate, Version=1.0.3.0, Culture=neutral, PublicKeyToken=154fdcb44c4484fc'', check that type and assembly names are correct

esta dando esse erro
Quem enviou: Marcelo Lazaro
Postado em: 13/11/2006 0:00:00
Outros artigos do autor Topo
Visual Studio Team System: mais qualidade aos times de desenvolvimento de software
Visual Studio Team System - Por onde eu começo?
Primeiras imagens do Visual Studio Team System 2010
Usando o recurso "Auto Complete" no Windows Forms 2.0
Personalizando colunas, linhas e células de um DataGridView
C#.NET: Desenvolvendo aplicações usando a tecnologia WinFX
Usando Nullable Types com NHibernate para campos DateTime
Geração automática do mapeamento objeto/relacional para o NHibernate usando MyGeneration
.NET: Drag and Drop na prática usando TableLayoutPanel
Tratamento global de exceções em aplicações Windows Forms
Passo a passo como acessar o banco de dados FireBird usando C#.Net, FireBird .Net Data Provider, SharpDevelop e IBExpert
Artigos relacionados Topo
Eval em C# com IronRuby
Trabalhando com CLR: Stored Procedure – Primeiro passo
Entendendo interfaces com C#
Executar aplicações em background com Agendador de Tarefas Windows
ExpandoObject: dinamismo no .NET 4.0
Integração C# + Ruby
Utilizando um Tipo T como parâmetro e recuperando seus valores
Detectando mudanças em objetos
URL Routing com o Visual Studio .NET 2010
Acessando dados com Textboxes e botões de navegação
Controle de Acesso Windows Forms C# - Parte 3
Trabalhando com SQL CLR: Início
Funcionalidades do Office usando Visual Studio for Office – Parte 3
Cadastro de um Consultório em Windows Forms, com C# e SQL Server – Parte 10
Carregar DataGridView utilizando linq to xml
Funcionalidades do Office usando Visual Studio for Office - Parte 2
Estenda as funcionalidades do Office com o Visual Studio for Office
A importância do StrongName
Cadastro de um Consultório em Windows Forms, com C# e SQL Server – Parte 9
Descubra o ADO.NET Entity Framework
Controle de Usuários – Windows Forms C# (Parte 2)
Por que utilizar StringBuilder?
Formatando String rapidamente
Resolvendo problemas combinatórios com LINQ
Introdução a Refatoração – Parte III
Controle de Usuários – Windows Forms C# (Parte 1)
Você gosta de compartilhar conhecimento?
Trabalhando com Procedures no .NET
Eventos: Um exemplo prático
Cadastro de um Consultório em Windows Forms, com C# e SQL Server – Parte 8
Produtos relacionados Topo
Pacote: Promoção C# Básico (válido somente para pagamento via boleto bancário)
CD/DVD: CD de Treinamento Criando Aplicações Asp.Net em Camadas (parte integrante do portal de vídeos .Net)
CD/DVD: CD de Treinamento - Aprenda C# Básico Passo a Passo
Pacote: Promoção: Portal de Vídeos .Net + CD Novidades das Linguagens (válido somente para pagamento via boleto bancário)
Pacote: Promoção Linq To SQL (válido somente para pagamento via boleto bancário)
CD/DVD: DVD de Treinamento LINQ TO SQL e Entity Framework Avançado
CD/DVD: DVD de Treinamento E-Commerce com Visual Web Developer
CD/DVD: DVD de Treinamento - Crie uma aplicação ASP.NET com LINQ TO SQL
CD/DVD: DVD de Treinamento Explorando o LINQ para SQL
CD/DVD: CD de Treinamento – Implementando AJAX em páginas ASP.NET 3.5 com o Visual Studio .NET 2008
CD/DVD: CD de Treinamento sobre ASP.NET 2.0 Básico
CD/DVD: CD de treinamento: Um mergulho no Controle GridView do ASP.NET 2.0
E-Book: Banco de dados com C# e Visual Studio .Net 2005 (entrega via download)
E-Book: ASP.NET Ajax com C# e VB.NET (E-Book com entrega via download)
CD/DVD: CD de Treinamento - Desenvolvendo uma aplicação Smart Client com Visual Studio 2005, C#, Web Services e Banco de Dados
CD/DVD: CD de Treinamento sobre LINQ to SQL para iniciantes com Visual Studio .Net 2008
CD/DVD: CD de Treinamento sobre ADO.NET para Iniciantes
CD/DVD: CD de Treinamento Novidades das Linguagens C# 3.0 e VB 9 (Visual Basic 9)
CD/DVD: CD de Treinamento Introdução a .NET com C# - Visual Studio 2005
CD/DVD: CD ASP.NET 2.0 - Atualização Rápida (Visual Studio .NET 2005)
E-Book: E-Book: Lógica de Programação com C# e VB.NET (via download)
CD/DVD: CD - Treinamento de ASP.NET 2.0 AJAX Extensions
CD/DVD: CD de Treinamento de Visual Studio .NET 2005
CD/DVD: CD de Treinamento de ASP.NET 2.0 - Explorando as novidades
Livro: ASP.NET Utilizando C# - De Programador para Programador
E-Book: E-Book: Programando com C# e Visual Studio .NET 2005 (entrega via download)
E-Book: E-Book: Curso Prático de Visual Studio .NET 2005 (entrega via download)
E-Book: E-Book: Curso prático de Visual Studio .NET (via download)
Livro: Programando em C#.Net para Web: Guia Rápido Usando Visual Studio.Net 2003
CD/DVD: CD de Treinamento de Visual Studio .NET 2003 Multimídia
Livro: Use a Cabeça! Servlets & JSP
© Copyright 2001-2010 Codeline Editora, Comércio e Tecnologia Ltda. | Política de privacidade e de uso | Anuncie | Fale conosco

» Site hospedado na Porta 80 Web Hosting «
Nossos números
Dicas: 1.314
Códigos/scripts: 279
Funções de VBScript : 90
Funções JScript : 05
Livros: 1.805
Notícias: 2.488
Artigos: 2.972
Cases: 14
Oportunidades: 4.546
Publicidade

Conheça a loja do Linha de Código.

Microsoft indica Linha de Código.

Assine a Revista Mundo .NET
Portal de Vídeos .NET - os melhores vídeos .NET estão aqui
O que você fará com o Visual Studio 2010?
Revista Codificando .Net

Siga-nos no Twitter

Linha de Código no Orkut
Fórum de discussão do portal Linha de Código
Feeds
Oportunidades
Notícias
Artigos
Artigos personalizado
       (Por assunto)
Artigos personalizado
       (Por autor)
Portal Vídeos .NET
Portal Vídeos Delphi
LC Blog
       (Onde você faz a notícia)
Promoções
Promoção Mobile com entrega via download (válido somente para pagamento via boleto bancário)
Promoção Mobile com entrega via download (válido somente para pagamento via boleto bancário)
De: R$ 189,00
Por: R$ 126,00
Promoção Wordpress + Tabless (válido somente para pagamento via boleto bancário)
De: R$ 149,70
Por: R$ 99,80
Promoção C# Básico (válido somente para pagamento via boleto bancário)
De: R$ 185,90
Por: R$ 136,00
Promoção PHP + MYSQL Intelimax (válido somente para pagamento via boleto bancário)
De: R$ 308,00
Por: R$ 219,00
Promoção Especial Infra
De: R$ 175,95
Por: R$ 136,00
CDs/DVDs
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
Por: R$ 59,00
DVD Curso de CorelDraw X4
Por: R$ 79,90
DVD Curso de Fireworks CS4
Por: R$ 49,90
DVD Curso de Indesign CS4
Por: R$ 55,00
DVD Curso de Efeitos Digitais
Por: R$ 49,90
Livros
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
De: R$ 129,00
Por: R$ 77,40
Foundation FLASH CS3 para Designers
Ciência Moderna
De: R$ 139,00
Por: R$ 83,40
Recursos Visuais na Web com PHP
Ciência Moderna
De: R$ 49,00
Por: R$ 29,40
Crie um Sistema Web com PHP 5 e AJAX - Controle de Estoque
Erica
De: R$ 99,50
Por: R$ 84,50
Crie Projetos Gráficos com Adobe Photoshop CS4, CorelDRAW X4 e Adobe InDesign CS4 - em Português
Erica
De: R$ 77,50
Por: R$ 65,80
E-Books
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Por: R$ 30,00
Manual de Estudos - Exame 70-291 - Windows Server 2003 (606 páginas) - entrega via download
Por: R$ 30,00
Dominando MS – Visio ® em 20 Passos - Melhores Práticas em Gestão de Projetos (entrega via download)
Por: R$ 30,00
MS-Project® 2007 - Melhores Práticas de Gestão de Projetos - Dominando MS – Project ® em 20 Passos (e-book com entrega via download)
Por: R$ 20,00
Banco de dados com C# e Visual Studio .Net 2005 (entrega via download)
Por: R$ 20,00
Os 10+ | Autores do dia
Israel Aéce
Júlio Cesar Fabris Battisti
Anderson Patricio
Alfred Reinold Baudisch
Luiz Felipe de Freitas
Robert Martim
Ramon Durães
Alessandro de Oliveira Faria
José Carlos Macoratti
Eric C M Oliveira
Os 10+ | Artigos do dia
HTML Básico
HTML Avançado
Criando aplicativos para o Orkut
Tutorial de Tabelas Dinâmicas no Excel – Parte 1
Excel: fórmulas matriciais
ASP.NET 2.0 - Explorando o GridView
Iniciando um projeto de Nota Fiscal Eletrônica - NFe
PL/SQL - Procedures e Funções
Excel: Comparando Listas
PHP: Formulários e upload de múltiplos arquivos e fotos