ASP NET – Entity Framework – ORM – MVC – C#

Publicado: 28 de junho de 2015 em C#

O Entity Framework é um framework de código aberto (ORM) para ADO.NET que faz parte do .NET Framework. O EF fornece uma experiência de acesso a dados LINQ fortemente tipada nos bancos de dados relacionais incluindo acesso ao SQL Server de uma forma direta e eficiente pois ele elimina a necessidade da maior parte do código de acesso a dados que os desenvolvedores geralmente precisam escrever. A primeira versão do Entity Framework foi incluído com o .NET Framework 3.5 Service Pack 1 e Visual Studio 2008 Service Pack 1, lançado em 11 de agosto de 2008. Esta versão foi amplamente criticada, mesmo atraindo um “voto de confiança” assinado por cerca de mil desenvolvedores, entre varias criticas uma das maiores era que na época não era possível utilizar os bancos de dados lideres de mercado como Oracle e outros, a Oracle lançou posteriormente provedores de acesso e ferramentas para utilizar Oracle com o Entity Framework integrados em seu pacote de acesso a dados chamado ODAC.

A versão 6.0 foi lançada em 17 de outubro de 2013 e é agora um projeto open source licenciado sob Apache License v2. Como ASP.NET MVC Framework, seu código-fonte está hospedado no CodePlex usando Git. Esta versão tem uma série de melhorias para suporte a sua aproximação Code First.

As capacidades avançadas do Entity Framework, funcionam com uma série de servidores de banco de dados, incluindo o Microsoft SQL Server, Oracle e DB2. Incluem um mecanismo sofisticado de mapeamento que pode lidar com esquemas reais de banco de dados e funciona bem com procedimentos armazenados. Fornecem ferramentas integradas do Visual Studio para criar visualmente modelos de entidade e gerar de forma autônoma modelos a partir de um banco de dados existente. Os novos bancos de dados podem ser implantados a partir de um modelo, que também pode ser editado à mão para controle total.

Entity Framework: http://www.asp.net/entity-framework

CodePlex: https://entityframework.codeplex.com/

Abordagens Entity Framework

Schema First – criamos a estrutura de entidade a partir de um banco de dados existente. Usamos todas as outras funcionalidades, tais como o modelo, sincronização de banco de dados e a geração de código, da mesma maneira que usamos na abordagem Model First.

Model First – o modelo de banco de dados é criado pela primeira vez usando o designer ORM no Visual Studio. Uma vez que o modelo que consiste em entidades e relações foi concebido, o banco de dados físico vai ser gerado a partir do modelo.

Code First – criamos as classes primeiro e, em seguida, geramos o banco de dados das classes diretamente. No código em primeiro lugar, não vamos usar o Entity Designer (para editar .edmx arquivos) em tudo.

Usando o Entity Framework

1 – Crie uma nova aplicação MVC usando o template padrão, utilize o código abaixo para criar os modelos e o objeto de entidade de banco de dados:

Model e Entity

Model e Entity

2 – Após utilizar os  códigos abaixo, de um Build na sua aplicação. Você pode abrir a sua instancia MS SQL Server no SQL Management Studio e verificar o banco de dados criado automaticamente com o mesmo nome da sua entidade de banco de dados. Você também pode ver que os modelos geraram tabelas com suas respectivas chaves primarias e relacionamentos sem que você precise fazer nada:

Banco de dados - MSSQL Server

Banco de dados – MSSQL Server

3 – Você também pode manipular o banco de dados diretamente pelo Visual Studio usando a janela chamada Server Explorer:

Server Explorer

Server Explorer

4 – Em Data Connection adicione uma nova conexão e escolha o seu Data Source:

Data Source

Data Source

5 – Aponte para sua instancia do banco de dados e escolha o banco de dados da sua aplicação:

Adicionar Conexão

Adicionar Conexão

6 – Neste ponto você pode manipular seu banco de dados à partir de uma janela do Visual Studio:

VS - Banco de dados

VS – Banco de dados

7 – Abra o conteúdo de sua tabela clicando com o botão direito e escolhendo a opção Show Table Data. Insira os dados manualmente:

Editando Tabelas

Editando Tabelas

8 – Compile sua aplicação para receber o seguinte resultado:

ASP NET - MVC - Entity Framework

ASP NET – MVC – Entity Framework

Exemplo:

Neste exemplo utilizamos o Entity Framework em uma aplicação ASP.NET MVC para criar o banco de dados e suas tabelas e listar os dados contidos em uma tabela usando a abordagem Code First.

C#

Model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class CursosModelo
    {
        // Propriedades
        public int Id { get; set; }
        public string Curso { get; set; }
        public string Linguagem { get; set; }
        public string Descr { get; set; }

        // Modelo Relacional (DB)
        // Aponta para o identificador da grade
        public int GradeID { get; set; }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class GradeModelo
    {
        // Propriedades
        public int Id { get; set; }               
        public string Dia { get; set; }
        public string hora { get; set; }

        // Aponta para o Curso
        public ICollection<CursosModelo> Cursos { get; set; }

    }
}
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class MinhaAppMeuDB : DbContext
    {
       public DbSet<CursosModelo> Cursos { get; set; }
       public DbSet<GradeModelo>  Grades { get; set; }

    }
}

View – Home

@model IEnumerable<WebApplication1.Models.CursosModelo>

@{
    ViewBag.Title = "Home Page";
}

<div class="jumbotron">
    <h1>Desenvolvimento Aberto - ASP.NET</h1>
    <p class="lead">ASP.NET - MVC - Entity Framework - HTML, CSS and JavaScript.</p>    
</div>


@foreach (var item in Model)
{
   <div>
       <h4>@item.Curso</h4>
       <div>@item.Linguagem </div>
       <div>@item.Descr</div>
       <hr />

   </div>

}

Controller – Home

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        // Cria instancia do banco de dados
        MinhaAppMeuDB DB = new MinhaAppMeuDB();

        public ActionResult Index()
        {
            var modelo = DB.Cursos.ToList();
            return View(modelo);
        }

        // Cria método override 
        protected override void Dispose(bool disposing)
        {
            // Limpa os recursos

            if (DB != null)
            {
                DB.Dispose();
            }
            base.Dispose(disposing);
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";
            
            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your application description page.";
            
            return View();
        }
    }
}
Anúncios
comentários
  1. Eclevs disse:

    Estou tendo problema na linha DB.Dispose(); O Dispose está tachado em vermelho e mostrando “Generate method stub for ‘Dispose’ in … application.Models.MinhaAppMeuDB”

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s