Page 31 - Revista_60.pub
P. 31

A PROGRAMAR







                                    ASP.NET CORE, ANGULAR 5  - CRUD COM ENTITY FRAMEWORK

              Neste momento temos a estrutura base feita, mas preci-                                      GetAlledicoes()
         samos de adicionar os packages que nos irão permitir usar           {
         Entity Framework e SQL Server. Para tal executamos os se-              try
                                                                            {
         guintes comandos na consola do package manager:                        return db.TblEmployee.ToList();
         Install-Package                                                    }
          Microsoft.EntityFrameworkCore.SqlServer                           catch
         Install-Package                                                    {
                       Microsoft.EntityFrameworkCore.Tools                      throw;
                                                                            }
                                                                        }
         Posto isto, podemos facilmente criar o nosso model, a partir
         das tabelas existentes na base de dados, sem que tenhamos           //adiciona Edicao
         de escrever model a model, recorrendo ao seguinte comando:           public int AddEdicao(TblEdicoes edicao)
                                                                        {
         Scaffold-DbContext "\\PC\SQLServerDev01"                           try
                    Microsoft.EntityFrameworkCore.SqlServer                 {
               -OutputDir Models -Tables tblEdições, tblAnos                    db.TblEdicoes.Add(edicao);
                                                                                db.SaveChanges();
              Executado este comando, são geradas automaticamen-                  return 1;
         te quatro classes,  TestDBContext.cs, tblEdicoes, tblAnos. Es-              }
                                                                            catch
         tas classes são geradas automaticamente, uma vez que esta-              {
         mos a utilizar uma abordagem Entity Framework Core.                    throw;
                                                                            }
              Feito isto criamos uma nova classe, que tratará das           }
         operações CRUD (Creat, Read, Update and Delete), a que             //ActualizaEdicao
         vamos chamar EdicoesDataAccessLayer.cs. Para tal, clica-se          public int UpdateEdicao(Tbledicoes edicao)
         com o botão direito do rato no nosso projecto, na pasta Mo-          {
         dels, seguidamente em Adicionar, depois classe, por fim da-              try
         mos o nome à classe (EdicoesDataAccessLayer.cs) e clicamos               {
                                                                                db.Entry(edicao).State =
         “adicionar”.                                                                       EntityState.Modified;
                                                                                db.SaveChanges();

                                                                                return 1;
                                                                            }
                                                                            catch
                                                                            {
                                                                                throw;
                                                                            }
                                                                        }

                                                                       //obtem detalhes de uma edicao em concreto
                                                                        public TblEdicoes GetEdicaoData(int id)
                                                                        {
                                                                            try
                                                                            {
                                                                                TblEdicoes edicao =
                                                                                          db.Tbledicoes.Find(id);
                                                                                return edicao;
                                                                            }
                                                                            catch
                                                                            {
                                                                                throw;
                                                                            }
                                                                        }
              Vamos então escrever o código para a classe Edicoes-
         DataAccessLayer, que irá tratar todas as operações da base           //apaga uma edicao em concreto
                                                                        public int DeleteEdicao(int id)
         de dados.                                                      {
                                                                            try
         using Microsoft.EntityFrameworkCore;                               {
         using System;                                                          TblEdicoes edi =
         using System.Collections.Generic;                                                db.Tbledicoes.Find(id);
         using System.Linq;                                                     db.TblEdicoes.Remove(edi);
         using System.Threading.Tasks;                                          db.SaveChanges();
                                                                                return 1;
         namespace EFNgApp.Models                                           }
         {                                                                  catch
             public class EmployeeDataAccessLayer                           {
             {                                                                  throw;
                 TestDBContext db = new TestDBContext();                    }
                                                                        }
                 public IEnumerable<TblEdicoes>



                                                           31
   26   27   28   29   30   31   32   33   34   35   36