Gooogle’s Women Techmakers

Olá pessoal.

Há algumas semanas atrás recebi o convite para participar do Google’s Women Techmakers e me inscrevi para o mesmo e fiquei no aguardo de uma aprovação. No dia 03 de Março recebi o e-mail informando que fui aprovada para participar do evento.

Mas, o que é o Google’s Women Techmakers? É um programa global do Google e uma marca para as mulheres de tecnologia. O evento é internacional e acontece desde 2012 para celebrar o Dia das Mulheres, e acontece em Março e Abril, em todos os escritórios do Google pelo mundo.

Vou participar do evento em São Paulo, no dia 19 de Março e estou muito contente e ansiosa por isso. Teremos hands-on coding workshops, inspiring speakers, sem falar no networking que acontece em eventos como este.

Para saber mais visite o site https://www.womentechmakers.com/iwd16.

WT_logo_2lines_pos1

Instalando Entity Framework via NuGet e PowerShell

Recentemente recebi várias dúvidas em relação à instalação do Entity Framework e, principalmente, como fazer um downgrade da versão do mesmo.

Podemos fazer a instalação do Entity Framework via NuGet. Quando essa é a opção escolhida, o gerenciador do NuGet instala a versão mais recente do Entity Framework. Porém, você pode se deparar com a situação de que seja necessário utilizar uma versão mais antiga do Entity Framework, por quaisquer circunstâncias. Neste caso, existe a opção de fazer a instalação da versão que for necessária para o seu uso, ou caso você faça a instalação da versão recente do Entity Framework e quer fazer um downgrade dessa versão, utilizar comandos PowerShell no Package Manager Console, no Visual Studio.

Para instalar o Entity Framework via NuGet:

  1. Abra algum projeto do Visual Studio.
  2. Clique com o botão direito em References – Manage NuGet Packages.
  3. Figura 1 - Instalando Entity Framework via NuGet e PowerShell

  4. Clique em Online – nuget.org e procure por EntityFramework. Clique no botão Install. Observe que do lado direito encontra-se a versão do Entity Framework que está sendo instalada.
  5. Figura 2 - Instalando Entity Framework via NuGet ou PowerShell

  6. Quando a caixa de diálogo abaixo for exibida, clique em I Accept. Essa caixa pergunta se você quer aceitar ou recusar o termo de licença para instalação do Entity Framework.
  7. Figura 3 - Instalando Entity Framework via NuGet e PowerShell

  8. Observe que, assim que o Entity Framework for instalado, um check verde aparecerá ao lado direito da caixa onde foi localizado o pacote do Entity Framework.
  9. Figura 4 - Instalando Entity Framework via NuGet e PowerShell

    Agora você tem instalado no seu projeto o Entity Framework com versão 6.1.0.

    Caso você queira fazer a instalação de uma versão anterior a atual no seu projeto, podemos usar comandos PowerShell para esse downgrade.

    Se o seu projeto já tiver alguma versão do Entity Framework instalada, desinstalaremos a mesma primeiramente.

  10. Clique no menu Tools – Library Package Manager – Package Manager Console.
  11. Figura 5 - Instalando Entity Framework via NuGet e PowerShell

  12. A janela do Package Manager Console será exibida. Para desinstalar o Entity Framework entre com o seguinte comando:
  13. Uninstall-package EntityFramework
    

    Nota: pode acontecer de você não conseguir desinstalar o Entity Framework por outras referências depender do mesmo.

  14. Para instalar o Entity Framework novamente, porém agora com uma versão anterior, entre com o seguinte comando:
  15. Install-Package EntityFramework -version 6.0.0
    

    Nota: o “6.0.0” é a versão que está sendo instalada no seu projeto.

    Figura 6 - Instalando Entity Framework via NuGet e PowerShell

    Se sua versão foi instalada corretamente, você terá a mensagem “Succesfully added ‘Entity Framework 6.0.0’ to WingtipToys.”.

ODT para Visual Studio 2013

Para os desenvolvedores de plantão, saiu a atualização do ODT (Oracle Developer Tools). Uma das features mais esperadas da nova atualização (12.1.0.1.2) foi o provider do Oracle para Visual Studio 2013, esperada, principalmente para quem trabalha com sistemas multibancos, e para quem precisar usar LINQ e/ou Entity Framework.

Durante alguns dias de teste do mesmo, percebi que o mesmo não tem suporte para a versão mais atual do Entity Framework: 6. Porém, a versão do Entity Framework 5.0 e as que antecedem funcionam perfeitamente. Acredito que breve teremos uma atualização com suporte para EF6.

Para download e mais detalhes, clique aqui.

visual studio
19-04-2013_oracle

Projeto Coaching MTAC – Como participar da comunidade?

Nos últimos meses, alguns membros do grupo MTAC tem desenvolvido um trabalho de Coaching junto a outros membros do grupo, expandindo esse trabalho a demais comunidades técnicas e público que se interessa nos tópicos abordados pelo coaching.

Primeiramente, o que é Coaching?

Coaching é uma metodologia nova que busca atender as seguintes necessidades humanas: atingir metas, solucionar problemas e desenvolver novas habilidades.

Para iniciar o nosso projeto, o MTAC Eduardo Ramiro fez um webcast sobre Como participar da comunidade, que está disponível no vídeo abaixo.

Assim que novos temas forem apresentados, posto no meu blog, e fiquem de olho também na página MTAC Brasil.

Mulheres na Tecnologia da Informação

A blogueira Renata Andrade tem feito um ótimo trabalho recolhendo currículos e fazendo entrevistas com mulheres que trabalham com TI, incentivando e inspirando as mulheres a seguirem carreiras ligadas à tecnologia.

Ela acredita que com essas informações, pode-se despertar interesse com as carreiras relacionadas a TI.

Assim, ela fez um post no blog dela contando um pouquinho dos meus interesses e do que eu faço atualmente. Adorei o resultado!

Quem quiser conferir, acesse http://renatandrade10.blogspot.com.br/2013/06/andrielle-de-paula-delicadeza-da-menina.html

mulher_no_computador_bolo

Innovate4Good@Microsoft – Saiba como foi o evento!

Como prometido anteriormente, nesse post irei detalhar tudo que aconteceu no Innovate4Good, que aconteceu no Microsoft Technology Center, fotos e tudo mais.
O evento teve início no dia 22 de Maio, às 13 da tarde. Tivemos um brunch de boas-vindas e uma ótima recepção, o que é muito importante para conhecer o restante dos participantes e fazer networking.

417898_579307672104076_533287905_n

943321_579307658770744_1787388149_n

Para iniciar o evento oficialmente, o Presidente da Microsoft Brasil, Michel Levy, usou de sua experiência e nos passou ótimos ensinamentos sobre empreendedorismo e inovação.

481792_579307848770725_761085747_n

WP_001020

Foi realizada a apresentação dos participantes e a construção da ideia de rede como ação extremamente importante para obter sucesso em iniciativas sociais. Fizemos uma dinâmica.

922777_579308118770698_303165603_n (1)

Rolou também uma palestra com Romero Rodrigues, um dos fundadores do site Buscapé e CEO do Buscapé Company, onde ele contou, desde o início, os obstáculos que passaram até chegar como CEO do Buscapé.

379575_579307985437378_1853781320_n

941244_10151381369721930_7419519_n

Depois da palestra do Romero Rodrigues, começamos as atividades em torno das ideias de projetos que levamos até o I4G. Cada participante teve a oportunidade de apresentar suas ideias. Como 40 participantes levaram suas ideias, reunimos os temas das ideias parecidas, fazendo uma base de cada projeto, montando grupos de até 7 pessoas.

WP_001026

9 projetos foram escolhidos para votação. Organizadores do evento e nós, participantes, votamos nas melhores ideias.

941825_10151670964073524_1298096217_n

O meu projeto chamado Ensino Web, foi um dos escolhidos e conta com mais 5 pessoas no grupo.

Á noite, tivemos um Happy Hour na pizzaria Bacio del Nonno.

No dia 23 de Maio começamos as atividades 8 horas da manhã com duas palestras. A primeira palestra abordou ferramentas de produtividade, colaboração e comunicação unificada da Microsoft com o palestrante João Paulo Sevegnani.

WP_001042

WP_001044

WP_001045

Tivemos como segunda palestra Eduardo Sonnino, que venceu o Imagine Cup 2012. Ele falou sobre como conseguiu chegar ao prêmio, e apresentou seu projeto, o Fusion 4D, que é uma plataforma que manipula objetos 3D com fins educacionais.

WP_001034

WP_001035

WP_001036

WP_001038

WP_001039

WP_001040

WP_001041

Encerradas as palestras, focamos no projeto apresentado no dia anterior. Durante o restante do dia definimos problema, finalidade, missão, metas, público-alvo, apoiadores, riscos, desafios do projeto e como superá-los. Seguimos orientações para construir o plano de ação e ecossistema financeiro do projeto. Preparamos, também, uma pequena apresentação do projeto e tivemos feedback dos mesmos após a apresentação.

379653_10151382672701930_1673642331_n

WP_001046

WP_001052

WP_001056

WP_001058

Compareceram pessoas de vários estados do Brasil.

WP_001005

Eu e meu colega Thiago Oliveira, que é participante do grupo de MSP do Brasil, nos sentimos honrados por representar os grupos de MTAC e MSP.

268814_579307668770743_2008454419_n

O que posso dizer do evento? Foi maravilhoso! Tudo que consegui anotar e registrar no pouco tempo que tive nesses dois dias, coloquei no post. Se alguém quiser maiores detalhes, me procurem.

Innovate4Good@Microsoft

Bom dia.

Já são 06:30 da manhã e estou no momento no Aeroporto Internacional de Confins esperando meu embarque para ir até São Paulo participar do Innovate4Good.

O que é o Microsoft Innovate for Good? Programa da Microsoft YouthSpark, é uma comunidade global que capacita os jovens a colaborar, inspirar e suportar uns aos outros quanto ao uso da tecnologia para fazer o diferencial em suas comunidades.

Innovate for Good traz jovens de todo o mundo em eventos locais e numa comunidade global online para fornecer suporte para suas ideias e em fazer a diferença.

Para essa comunidade, a Microsoft traz o conhecimento que a companhia, seus empregados, e ex-alunos tem ganhado em mais de 30 anos de inovação, negócios e tecnologias assim como engaja em mais de 100 países ao redor do mundo e compartilha e inspira a próxima geração do bem.

O evento acontecerá nos dias 22/05 e 23/05, no MTC, em São Paulo. Irei tirar muitas fotos e postar tudo que rolou no evento.

i4good

Para saber mais acesse Innovate4Good@Microsoft.

AppDay 2013 em Belo Horizonte

587x292

O que é o AppDay?

Dia em que toda comunidade de desenvolvedores e entusiastas por tecnologia do país serão convidados a participar de um evento virtual único.

A Microsoft apoiará cada desenvolvedor que nesta data, tiver interesse em criar e submeter um aplicativo do Windows 8 para a Windows Store.

Todos participantes do evento AppDay receberão um treinamento online de 1 dia totalmente gratuito.

Em diversas regiões do país este evento acontecerá fisicamente, em universidades e demais instituições de ensino. Desta maneira, o desenvolvedor receberá o treinamento em pessoa, que será ministrado pelo time de Evangelistas da Microsoft Brasil e outros profissionais habilitados.

Caso o desenvolvedor não possa de deslocar para uma dessas unidades, será possível acompanhar o treinamento online, via Internet, em tempo real, de modo gratuito.

Em Belo Horizonte, teremos o AppDay em 4 locais: Inforium, PUC Minas São Gabriel, PUC Minas Barreiro e Bizmart. Abaixo seguem links para inscrições:

Maiores informação no site do AppDay ou envie email para comunidadetecnicamsbh@outlook.com

Iniciando com ASP.NET 4.5 Web Forms – Parte 3 – Criando o DAL (Data Access Layer)

Esse tutorial descreve como criar, acessar, e revisar dados de uma base de dados usando ASP.NET Web Forms e Entity Framework Code First. É continuação do tutorial anterior “Criando o Projeto” e é parte da série de tutoriais Wingtip Toy Store. Quando você completar esse tutorial, terá construído um grupo de classes de acesso a dados que estão na pasta Models do projeto.

1 O que aprenderá:

  • Como criar o modelo de dados.
  • Como inicializar e alimentar a base de dados.
  • Como atualizar e configurar a aplicação para suportar a base de dados.

Essas são as características introduzidas no tutorial:

  • Entity Framework Code First
  • LocalDB
  • Data Annotations

2 Criando o Modelo de Dados

Entity Framework é um framework ORM (Object-Relational Mapping). Permite que você trabalhe com dados relacionais como objetos, eliminando a maioria de código de acesso a dados que você usualmente precisa escrever. Usando Entity Framework, você pode emitir consultas usando LINQ, e então recuperar e manipular dados como objetos fortemente tipados. LINQ fornece padrões para consulta e atualização de dados. Usar Entity Framework permite que você foque em criar o resto de sua aplicação, ao invés de focar nos fundamentos de acesso a dados. Posteriormente nesse tutorial, será mostrado como usar dados para popular navegação e consulta de produtos.

Entity Framework suporta um paradigma de desenvolvimento chamado Code First. Code First permite que você defina seus modelos de dados usando classes. Uma classe é um construtor que permite que você crie seus próprios tipos customizados agrupando variáveis de outros tipos, métodos e eventos. Você pode mapear classes para uma base de dados existente ou usá-las para gerar uma base de dados. Nesse tutorial, você criará o modelo de dados escrevendo classes de modelos de dados. E então, permitirá que o Entity Framework crie a base de dados dessas novas classes.

Começaremos criando entity classes que definem modelos de dadps para a aplicação Web Forms. Depois criará uma context class que gerencia as entity classes e fornece acesso a dados à base de dados. Criará também uma classe inicializadora que será usada para popular a base de dados.

2.1 Entity Framework e Referências

Por padrão, Entity Framework está incluso quando você cria uma nova aplicação ASP.NET usando o template Web Forms. Entity Framework pode ser instalado, desinstalado, e atualizado com o NuGet.

O pacote NuGet inclui os seguintes assemblies no seu projeto:

  • EntityFramework.dll – código usado pelo Entity Framework.
  • EntityFramework.SqlServer.dll – provider do Microsoft SQL Server para Entity Framework.

2.2 Entity Classes

As classes que você cria para definir o schema dos dados são chamadas entity classes. Se você é novo no design de base de dados, pense nas entity classes como definições de tabelas de uma base de dados. Cada propriedade na classe especifica uma coluna na tabela da base de dados. Essas classes fornecem uma estrutura leve, interface objeto-relacional entre código orientado a objeto e a estrutura relacional da tabela da base de dados.

Nesse tutorial, você começará adicionando uma entity class simples representando os schemas para produtos e categorias. A classe produtos conterá definições para cada produto. O nome de cada membro da classe produtos será ProductID, ProductName, Description, ImagePath, UnitPrice, CategoryID, e Category. A classe categoria conterá definições para cada categoria que um produto pode pertencer, como Car, Boat, ou Plane. O nome de cada membro da classe categoria será CategoryID, CategoryName, Description, e Products. Cada produto pertencerá a uma das categorias. Essas entity classes serão adicionadas a pasta existente no projeto chamado Models.

  1. Na Solution Explorer, clique com o botão direito na pasta Models e então selecione Add -> New Item.
  2. Figura 1 - Parte 3

    A caixa de diálogo Add New Item é exibida.

  3. Em Visual C# do painel Installed do lado esquerdo, selecione Code.
  4. Figura 2 - Parte 3

  5. Selecione Class no painel do centro e nomeie essa classe como Product.cs.
  6. Clique em Add. O novo arquivo da classe é exibido no editor.
  7. Substitua o código padrão pelo seguinte:
  8. using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    
    namespace WingtipToys.Models
    {
    public class Product
    {
            [ScaffoldColumn(false)]
            public int ProductID { get; set; }
    
            [Required, StringLength(100), Display(Name = "Name")]
            public string ProductName { get; set; }
    
            [Required, StringLength(10000), Display(Name = "Product Description"), DataType(DataType.MultilineText)]
    
            public string Description { get; set; }
    
            public string ImagePath { get; set; }
    
            [Display(Name = "Price")]
            public double? UnitPrice { get; set; }
    
            public int? CategoryID { get; set; }
    
            public virtual Category Category { get; set; }
        }
    }
    
    
  9. Crie outra class repetindo os passos 1 até 4, entretanto, nomeie a nova classe como Category.cs e substitua o código padrão pelo seguinte:
  10. 
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    
    namespace WingtipToys.Models
    {
        public class Category
        {
            [ScaffoldColumn(false)]
            public int CategoryID { get; set; }
    
            [Required, StringLength(100), Display(Name = "Name")]
            public string CategoryName { get; set; }
    
            [Display(Name = "Product Description")]
            public string Description { get; set; }
    
            public virtual ICollection<Product> Products { get; set; }
        }
    }
    
    

Como mencionado anteriormente, a classe Category representa o tipo de produto que a aplicação é projetada para vender (como Carros, Boats, Rockets, dentre outros), e a classe Product representa os produtos individuais (brinquedos) na base de dados. Cada instância de um objeto Product corresponderá a uma linha dentro de uma tabela de base de dados relacional, e cada propriedade da classe Product mapeará uma coluna na tabela de base de dados relacional. Posteriormente nesse tutorial, será revisado os dados dos produtos contidos na base de dados.

2.3 Data Annotations

Você deve ter notado que certos membros das classes tem atributos especificando detalhes sobre o membro, como ScaffoldColumn(false). Isso são data annotations. Os atributos data annotation podem descrever como validar entrada de usuário para aquele membro, especificar formatação para ele, e especificar como é modelado quando a base de dados é criada.

3 Context Class

Para começar usar as classes para acesso a dados, você deve definir uma context class. Como mencionado anteriormente, a context class gerencia as entity classes (como a classe Product e Category) e fornece acesso a dados para a base de dados.

Esse procedimento adicionada uma nova context class em C# para a pasta Models.

  1. Clique com o botão direito na pasta Models e então selecione Add -> New Item.
  2. Selecione Class do painel central, e nomeie como ProductContext.cs e clique em Add.
  3. Substitua o código padrão contido na classe pelo seguinte:
  4. using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data.Entity;
    
    namespace WingtipToys.Models
    {
        public class ProductContext : DbContext
        {
            public ProductContext()
                : base("WingtipToys")
            { }
    
            public DbSet<Category> Categories { get; set; }
            public DbSet<Product> Products { get; set; }
        }
    }
    
    

Esse código adiciona o namespace System.Data.Entity para que você possa ter acesso ao core de todas as funcionalidades do Entity Framework, que inclui a capacidade de consultar, inserir, atualizar, e deletar dados trabalhando com objetos fortemente tipados.

A classe ProductContext representa o contexto da base de dados do Entity Framework, que manipula a busca, armazenamento, e atualização das instâncias da classe Product na base de dados. A classe ProductContext deriva da classe base DbContext fornecido pelo Entity Framework.

4 Classe Inicializadora

Será necessário executar alguma lógica customizada para inicializar a base de dados na primeira vez que o context é usado. Isso permitirá alimentar os dados a serem adicionados na base de dados para que você possa imediatamente exibir produtos e categorias.

Esse procedimento adiciona uma nova classe inicializadora em C# na pasta Models.

  1. Crie outra classe na pasta Models e nomeie como ProductDatabaseInitializer.cs.
  2. Substitua o código padrão contido na classe pelo seguinte:
  3. 
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data.Entity;
    
    namespace WingtipToys.Models
    {
        public class ProductDatabaseInitializer : DropCreateDatabaseIfModelChanges<ProductContext>
        {
            protected override void Seed(ProductContext context)
            {
                GetCategories().ForEach(c => context.Categories.Add(c));
                GetProducts().ForEach(p => context.Products.Add(p));
            }
    
            private static List<Category> GetCategories()
            {
                var categories = new List<Category> {
                    new Category
                    {
                        CategoryID = 1,
                        CategoryName = "Cars"
                    },
                    new Category
                    {
                        CategoryID = 2,
                        CategoryName = "Planes"
                    },
                    new Category
                    {
                        CategoryID = 3,
                        CategoryName = "Trucks"
                    },
                    new Category
                    {
                        CategoryID = 4,
                        CategoryName = "Boats"
                    },
                    new Category
                    {
                        CategoryID = 5,
                        CategoryName = "Rockets"
                    }
                };
    
                return categories;
            }
    
            private static List<Product> GetProducts()
            {
                var products = new List<Product> {
                    new Product
                    {
                        ProductID = 1,
                        ProductName = "Convertible Car",
                        Description = "This convertible car is fast! The engine is powered by a neutrino based battery (not included)." + 
                                      "Power it up and let it go!", 
                        ImagePath="carconvert.png",
                        UnitPrice = 22.50,
                        CategoryID = 1
                   },
                    new Product 
                    {
                        ProductID = 2,
                        ProductName = "Old-time Car",
                        Description = "There's nothing old about this toy car, except it's looks. Compatible with other old toy cars.",
                        ImagePath="carearly.png",
                        UnitPrice = 15.95,
                         CategoryID = 1
                   },
                    new Product
                    {
                        ProductID = 3,
                        ProductName = "Fast Car",
                        Description = "Yes this car is fast, but it also floats in water.",
                        ImagePath="carfast.png",
                        UnitPrice = 32.99,
                        CategoryID = 1
                    },
                    new Product
                    {
                        ProductID = 4,
                        ProductName = "Super Fast Car",
                        Description = "Use this super fast car to entertain guests. Lights and doors work!",
                        ImagePath="carfaster.png",
                        UnitPrice = 8.95,
                        CategoryID = 1
                    },
                    new Product
                    {
                        ProductID = 5,
                        ProductName = "Old Style Racer",
                        Description = "This old style racer can fly (with user assistance). Gravity controls flight duration." + 
                                      "No batteries required.",
                        ImagePath="carracer.png",
                        UnitPrice = 34.95,
                        CategoryID = 1
                    },
                    new Product
                    {
                        ProductID = 6,
                        ProductName = "Ace Plane",
                        Description = "Authentic airplane toy. Features realistic color and details.",
                        ImagePath="planeace.png",
                        UnitPrice = 95.00,
                        CategoryID = 2
                    },
                    new Product
                    {
                        ProductID = 7,
                        ProductName = "Glider",
                        Description = "This fun glider is made from real balsa wood. Some assembly required.",
                        ImagePath="planeglider.png",
                        UnitPrice = 4.95,
                        CategoryID = 2
                    },
                    new Product
                    {
                        ProductID = 8,
                        ProductName = "Paper Plane",
                        Description = "This paper plane is like no other paper plane. Some folding required.",
                        ImagePath="planepaper.png",
                        UnitPrice = 2.95,
                        CategoryID = 2
                    },
                    new Product
                    {
                        ProductID = 9,
                        ProductName = "Propeller Plane",
                        Description = "Rubber band powered plane features two wheels.",
                        ImagePath="planeprop.png",
                        UnitPrice = 32.95,
                        CategoryID = 2
                    },
                    new Product
                    {
                        ProductID = 10,
                        ProductName = "Early Truck",
                        Description = "This toy truck has a real gas powered engine. Requires regular tune ups.",
                        ImagePath="truckearly.png",
                        UnitPrice = 15.00,
                        CategoryID = 3
                    },
                    new Product
                    {
                        ProductID = 11,
                        ProductName = "Fire Truck",
                        Description = "You will have endless fun with this one quarter sized fire truck.",
                        ImagePath="truckfire.png",
                        UnitPrice = 26.00,
                        CategoryID = 3
                    },
                    new Product
                    {
                        ProductID = 12,
                        ProductName = "Big Truck",
                        Description = "This fun toy truck can be used to tow other trucks that are not as big.",
                        ImagePath="truckbig.png",
                        UnitPrice = 29.00,
                        CategoryID = 3
                    },
                    new Product
                    {
                        ProductID = 13,
                        ProductName = "Big Ship",
                        Description = "Is it a boat or a ship. Let this floating vehicle decide by using its " + 
                                      "artifically intelligent computer brain!",
                        ImagePath="boatbig.png",
                        UnitPrice = 95.00,
                        CategoryID = 4
                    },
                    new Product
                    {
                        ProductID = 14,
                        ProductName = "Paper Boat",
                        Description = "Floating fun for all! This toy boat can be assembled in seconds. Floats for                   minutes!" + 
                                      "Some folding required.",
                        ImagePath="boatpaper.png",
                        UnitPrice = 4.95,
                        CategoryID = 4
                    },
                    new Product
                    {
                        ProductID = 15,
                        ProductName = "Sail Boat",
                        Description = "Put this fun toy sail boat in the water and let it go!",
                        ImagePath="boatsail.png",
                        UnitPrice = 42.95,
                        CategoryID = 4
                    },
                    new Product
                    {
                        ProductID = 16,
                        ProductName = "Rocket",
                        Description = "This fun rocket will travel up to a height of 200 feet.",
                        ImagePath="rocket.png",
                        UnitPrice = 122.95,
                        CategoryID = 5
                    }
                };
    
                return products;
            }
        }
    }
    
    

Como você pode ver no código acima, quando a base de dados é criada e inicializada, a propriedade Seed é substituída e definida. Quando a propriedade Seed é definida, os valores de categorias e produtos são usados para popular a base de dados. Se você tentar atualizar os dados alimentados modificando o código acima depois que a base de dados for criada, você não verá nenhuma atualização quando executar a aplicação Web. A razão é que o código acima usa uma implementação da classe DropCreateDatabaseIfModelChanges para reconhecer se o model foi alterado antes de resetar os dados alimentados. Se nenhuma alteração for feita às entity classes Category e Product, a base de dados não será reinicializada com os dados alimentados.

Nota: se você quisesse que a base de dados fosse recriada toda hora que a aplicação for executada, poderia usar a classe DropCreateDatabaseAlways ao invés da classe DropCreateDatabaseIfModelChanges. Entretanto para essa série de tutoriais, use a classe DropCreateDatabaseIfModelChanges.

Nesse ponto do tutorial, você terá uma pasta Models com quatro novas classes e uma classe padrão:

Figura 3 - Parte 3

5 Configurando a Aplicação para usar Data Model

Agora que você criou as classes que representam os dados, deve-se configurar a aplicação para usar as classes. No arquivo Global.asax, você adiciona código para inicializar o model. No arquivo Web.config você adiciona informação que diz a aplicação qual base de dados será usada para armazenar os dados que são representados pelas novas classes de dados. O arquivo Global.asax pode ser usado para manipular eventos ou métodos da aplicação. O arquivo Web.config permite que você controle a configuração de sua aplicação Web.

5.1 Atualizando o arquivo Global.asax

Para inicializar os data models quando a aplicação executar, você atualizará o manipulador Application_Start no arquivo Global.asax.

Nota: na Solution Explorer, você pode selecionar o arquivo Global.asax ou Global.asax.cs para editar o arquivo Global.asax.cs.

  1. Adicione o seguinte código no método Application_Start no arquivo Global.asax.cs.
  2. 
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Optimization;
    using System.Web.Routing;
    using System.Web.Security;
    using System.Web.SessionState;
    using System.Data.Entity;
    using WingtipToys.Models;
    
    namespace WingtipToys
    {
        public class Global : HttpApplication
        {
            void Application_Start(object sender, EventArgs e)
            {
                // Code that runs on application startup
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
    
                //Initialize the product database.
                Database.SetInitializer(new ProductDatabaseInitializer());
            }
        }
    }
    
    

Como mostrado no código acima, quando a aplicação iniciar, a aplicação especifica o inicializador que irá executar durante a primeira vez que o dado é acessado. Os namespaces adicionais (using System.Data.Entity e WingtipToys.Models) são necessários para acessar o objeto Database e o objeto ProductDatabaseInitializer.

5.2 Modificando o arquivo Web.config

Embora o Entity Framework Code First gerará uma base de dados para você num local padrão quando a base de dados é populada com dados, adicionar sua própria informação de conexão na sua aplicação te dá controle a localização da base de dados. Você especifica essa conexão da base de dados usando uma connection string no arquivo Web.config da aplicação na raíz do projeto. Adicionando uma nova connection string, você pode direcionar a localização da base de dados (wingtiptoys.mdf) para ser construída no diretório de dados da aplicação (App_Data), em vez de sua localização padrão. Fazer essa mudança permite que você encontre e inspecione posteriormente o arquivo da base de dados nesse tutorial.

  1. Na Solution Explorer, encontre e abra o arquivo Web.config.
  2. Adicione a connection string abaixo na seção do arquivo Web.config, como segue:
  3. 
    <connectionStrings>
        <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WingtipToys-20140407092028.mdf;Initial Catalog=aspnet-WingtipToys-20140407092028;Integrated Security=True" providerName="System.Data.SqlClient" />
        <add name="WingtipToys" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\wingtiptoys.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
      </connectionStrings>
    
    

Quando a aplicação for executada pela primeira vez, construirá a base de dados no local especificado pela connection string. Mas antes de executar a aplicação, vamos fazer o build da mesma.

6 Buildando a Aplicação

Para garantir que todas as classes e alterações da sua aplicação Web funcionaram, você deve buildar a aplicação.

  1. No menu Debug, selecione Build WingtipToys. A janela Output é exibida, e se tudo correu bem, você verá uma mensagem de sucesso.

Figura 4 - Parte 3

Se sua execução der erro, cheque os passos anteriores. A informação na janela Output indicará quais arquivos tem um problema e onde no arquivo uma mudança e requerida. Essa informação permitirá que você determine qual parte dos passos anteriores precisam ser revisados e corrigidos no seu projeto.

Sumário

Nesse tutorial você criou o modelo de dados, assim como, adicionou o código que será usado para inicializar e alimentar a base de dados. Você também configurou a aplicação para usar o modelo de dados quando a aplicação é executada.

No próximo tutorial, você atualizará a Interface de Usuário, adicionar navegação, e recuperar os dados da base de dados. Isso resultará na base de dados sendo automaticamente criada baseada em entity classes que você criou nesse tutorial.


O conteúdo desta página resulta da tradução do artigo Getting Started with ASP.NET 4.5 Web Forms – Create the Data Access Layer, escrito pelo autor Erik Reitan, originalmente presente no site do asp.net. A página correspondente pode ser conferida aqui.

Programa Students to Business 2013

Microsoft-20120823120845

O Programa Students to Business (S2B) iniciou suas inscrições hoje. É uma iniciativa da Microsoft, dos parceiros da Microsoft e as principais universidades do país com o objetivo de capacitar estudantes nas áreas de TI e oferecer oportunidades de emprego.

Para isso inclui diversas ações, sendo as principais capacitações gratuitas nas plataformas Microsoft e aproximação com empresas que buscam mão-de-obra com esse perfil. O programa é constituído de treinamento Online e também Presencial. Para o treinamento presencial, é necessário verificar disponibilidade na sua cidade:

  • Araraquara
  • Belo Horizonte
  • Brasília
  • Catanduva
  • Curitiba
  • Fortaleza
  • Goiânia
  • Guaratinguetá
  • Joinville
  • Marília
  • Morrinhos
  • Porto Alegre
  • Presidente Prudente
  • Recife
  • São Carlos
  • São José do Rio Preto
  • São José dos Campos
  • São Paulo (Itaquera)
  • São Paulo (Lapa)
  • São Paulo (Santana)
  • São Paulo (Santo Amaro)
  • São Paulo (Vila Prudente)
  • Sorocaba
  • Vitória

Faça sua inscrição no site do S2B e participe! 🙂

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 2.736 outros assinantes

Quantidade de Acessos

  • 485.750 visitas