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