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.