Entity Framework - Model First Approach

Neste capítulo, vamos aprender como criar um modelo de dados de entidade no designer usando o fluxo de trabalho conhecido como Model First.

  • O Model First é ótimo para quando você está iniciando um novo projeto em que o banco de dados ainda nem existe.

  • O modelo é armazenado em um arquivo EDMX e pode ser visualizado e editado no Entity Framework Designer.

  • No Model First, você define seu modelo em um designer do Entity Framework e, em seguida, gera o SQL, que criará o esquema do banco de dados para corresponder ao seu modelo e, em seguida, execute o SQL para criar o esquema no banco de dados.

  • As classes com as quais você interage em seu aplicativo são geradas automaticamente a partir do arquivo EDMX.

A seguir está um exemplo simples de criação de um novo projeto de console usando a abordagem Model First.

Step 1 - Abra o Visual Studio e selecione Arquivo → Novo → Projeto

Step 2 - Selecione Instalado → Modelos → Visual C # → Windows no painel esquerdo e, em seguida, no painel do meio, selecione Aplicativo de console.

Step 3 - Digite EFModelFirstDemo no campo Nome.

Step 4 - Para criar o modelo, primeiro clique com o botão direito do mouse em seu projeto de console no gerenciador de soluções e selecione Adicionar → Novos itens ...

A seguinte caixa de diálogo será aberta.

Step 5 - Selecione ADO.NET Entity Data Model no painel do meio e insira o nome ModelFirstDemoDB no campo Nome.

Step 6 - Clique no botão Adicionar que iniciará a caixa de diálogo Assistente de modelo de dados de entidade.

Step 7- Selecione o modelo Empty EF Designer e clique no botão Next. O Entity Framework Designer é aberto com um modelo em branco. Agora podemos começar a adicionar entidades, propriedades e associações ao modelo.

Step 8- Clique com o botão direito na superfície de design e selecione Propriedades. Na janela Propriedades, altere o Nome do contêiner de entidade para ModelFirstDemoDBContext.

Step 9 - Clique com o botão direito na superfície de design e selecione Add New → Entity…

A caixa de diálogo Adicionar entidade será aberta conforme mostrado na imagem a seguir.

Step 10 - Insira Aluno como nome da entidade e Id do Aluno como nome da propriedade e clique em OK.

Step 11 - Clique com o botão direito do mouse na nova entidade na superfície de design e selecione Adicionar novo → Propriedade escalar, insira Nome como o nome da propriedade.

Step 12 - Insira FirstName e, em seguida, adicione outras duas propriedades escalares, como LastName e EnrollmentDate.

Step 13 - Adicione mais duas Entidades Curso e Inscrição seguindo todas as etapas mencionadas acima e também adicione algumas propriedades Escalares conforme mostrado nas etapas a seguir.

Step 14 - Temos três entidades no Visual Designer, vamos adicionar alguma associação ou relacionamento entre elas.

Step 15 - Clique com o botão direito na superfície de design e selecione Adicionar Novo → Associação ...

Step 16 - Faça uma extremidade do ponto de relacionamento para Aluno com uma multiplicidade de um e o outro ponto final para Matrícula com uma multiplicidade de muitos.

Step 17 - Isso significa que um aluno tem muitas matrículas e a matrícula pertence a um aluno.

Step 18 - Certifique-se de que a caixa Adicionar propriedades de chave estrangeira à entidade 'Post' esteja marcada e clique em OK.

Step 19 - Da mesma forma, adicione mais uma associação entre Curso e Inscrição.

Step 20 - Seu modelo de dados ficará parecido com a tela a seguir após adicionar associações entre entidades.

Agora temos um modelo simples a partir do qual podemos gerar um banco de dados e usar para ler e gravar dados. Vamos em frente e gerar o banco de dados.

Step 1 - Clique com o botão direito na superfície de design e selecione Gerar banco de dados do modelo ...

Step 2 - Você pode selecionar o banco de dados existente ou criar uma nova conexão clicando em Nova Conexão ...

Step 3 - Para criar um novo banco de dados, clique em Nova conexão ...

Step 4 - Insira o nome do servidor e o nome do banco de dados.

Step 5 - Clique em Avançar.

Step 6- Clique em Concluir. Isso adicionará o arquivo * .edmx.sql ao projeto. Você pode executar scripts DDL no Visual Studio abrindo o arquivo .sql, clique com o botão direito e selecione Executar.

Step 7 - A seguinte caixa de diálogo será exibida para conectar ao banco de dados.

Step 8 - Na execução bem-sucedida, você verá a seguinte mensagem.

Step 9 - Vá para o explorador de servidores, você verá que o banco de dados é criado com três tabelas que são especificadas.

Em seguida, precisamos trocar nosso modelo para gerar o código que faz uso da API DbContext.

Step 1 - Clique com o botão direito em um local vazio do seu modelo no EF Designer e selecione Adicionar Item de Geração de Código ...

Você verá que a seguinte caixa de diálogo Adicionar Novo Item é aberta.

Step 2 - Selecione EF 6.x DbContext Generator no painel do meio e insira ModelFirstDemoModel no campo Nome.

Step 3 - Você verá em seu explorador de soluções que os modelos ModelFirstDemoModel.Context.tt e ModelFirstDemoModel.tt são gerados.

O ModelFirstDemoModel.Context gera o DbCcontext e os conjuntos de objetos que você pode retornar e usar para consultar, digamos, para contexto, alunos e cursos etc.

O outro modelo lida com todos os tipos Aluno, Cursos etc. A seguir está a classe Aluno, que é gerada automaticamente a partir do Modelo de Entidade.

A seguir está o código C # no qual alguns dados são inseridos e recuperados do banco de dados.

using System;
using System.Linq;

namespace EFModelFirstDemo {

   class Program {

      static void Main(string[] args) {

         using (var db = new ModelFirstDemoDBContext()) {

            // Create and save a new Student

            Console.Write("Enter a name for a new Student: ");
            var firstName = Console.ReadLine();

            var student = new Student {
               StudentID = 1,
               FirstName = firstName
            };
				
            db.Students.Add(student);
            db.SaveChanges();
				
            var query = from b in db.Students
               orderby b.FirstName select b;

            Console.WriteLine("All student in the database:");

            foreach (var item in query) {
               Console.WriteLine(item.FirstName);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
         }
      }
   }
}

Quando o código acima for executado, você receberá a seguinte saída -

Enter a name for a new Student:
Ali Khan
All student in the database:
Ali Khan
Press any key to exit...

Recomendamos que você execute o exemplo acima passo a passo para melhor compreensão.