Série LINQ to SQL Parte 2 – Modelando objetos com LINQ

Mão na massa

Continuando a série sobre LINQ to SQL , nesse post vou publicar como modelar os objetos no VS 2008 e preparar as classes para persistência dos objetos em Banco de Dados.

Crie um banco de dados no SQLEXPRESS por nome BlodDemo e duas tabelas Produtos e CategoriaProdutos. As duas tabelas se relacionam conforme figura abaixo.

Agora que já modelamos o banco, iremos modelar os objetos para que o LINQ crie as classes e faça o mapeamento com as tabelas.

No VS 2008:

  1. Crie um projeto do tipo WebSite e na linguagem C#
  2. Clique com o botão direito no projeto web, aponte para Add New Item, selecione o template LINQ to SQL Classes e dê nome de BlogLinqDemo.dbml. Veja que o VS cria o diagrama de mapeamento automaticamente.
  3. Aponte para o Server Explorer e adicione ou localize a conexão para o banco de dados que você criou
  4. Localize as duas tabelas e arraste as duas tabelas para o diagrama criado. O VS já cria as classes gerando os relacionamentos necessários. Você também pode editar os relacionamentos clicando com o botão direito no relacionamento

Veja na figura abaixo o diagrama que o VS 2008 cria no momento que você arrasta as tabelas para o diagrama.

Por trás das câmeras

É claro que não existe mágica nisso tudo. O VS é somente um modelador que gera as classes que serão executadas no seu código C#.
Se você abrir o arquivo BloqLinqDemo.designer.cs criado abaixo do BloqLinqDemo.dbml na Solution Explorer verá o código gerado para as classes. Parte do código, segue abaixo: 

[Table(Name=“dbo.Produtos”)]

public partial class Produto : INotifyPropertyChanging, INotifyPropertyChanged

{
      public Produto()
      {
            this._CategoriaProduto = default(EntityRef<CategoriaProduto>);
            OnCreated();
      }

      [Column(Storage=“_Descricao”, DbType=“NChar(10) NOT NULL”, CanBeNull=false)]
      public string Descricao
      {
            get
            {
                 return this._Descricao
            }

            set
            {
                  if ((this._Descricao != value))
                  {

                        this.OnDescricaoChanging(value);
                        this.SendPropertyChanging();
                        this._Descricao = value;
                        this.SendPropertyChanged(“Descricao”);
                        this.OnDescricaoChanged();

                  }
            }

      }

     [Column(Storage=“_Valor”, DbType=“Decimal(18,2) NOT NULL”)]
      public decimal Valor

      {
            get
            {
                  return this._Valor;
            }

            set
            {
                  if ((this._Valor != value))
                  {

                        this.OnValorChanging(value);
                        this.SendPropertyChanging();
                        this._Valor = value;
                        this.SendPropertyChanged(“Valor”);
                        this.OnValorChanged();
                  }

            }

      }

Na próxima parte dessa série, vamos criar um formulário web recebendo os valores do Cadastro de Produtos e faremos a inclusão do registro utilizando a síntaxe do LINQ

Até

Leave a Reply

Your email address will not be published. Required fields are marked *