Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova
Universitatea Tehnică a Moldovei
Departamentul Ingineria Software și Automatică
RAPORT
Lucrare de laborator Nr.4
Disciplina: Tehnologii Web
Tema: Accesarea, proiectarea bazelor de date
(EntityFramework)
A efectuat: [Link]. TI-195 Rotaru Dan
A verificat : asist. univ., Cristian Rusu
Chișinău 2021
Scopul: Accesarea, proiectarea bazelor de date (EntityFramework)
Sarcina: Crearea și proiectarea la o bază de date utilizând Entity Framework și
conectarea la proiectul [Link].
Considerații teoretice
O bază de date este o colecție de date care este stocată în conformitate cu schema de date
proiectată. Definiția unei baze de date nu trebuie confundată cu definirea unui sistem de gestionare a
bazelor de date (DBMS). DBMS - un set de instrumente software folosite pentru a crea și administra o
bază de date. Acest laborator utilizează unul dintre sistemele de gestionare a bazelor de date client-
server, Microsoft SQL Server, dezvoltat de Microsoft.
Entity Framework este o tehnologie orientată pe obiecte bazată în .NET framework pentru
lucrul cu datele. Acest framework va permite lucrarea cu datele, indiferent de tipul acestora. Astfel,
dacă la nivel fizic, dezvoltatorul operează cu tabele, chei, apoi la nivelul furnizat de cadrul entității, el
lucrează cu obiecte, ceea ce simplifică foarte mult lucrul cu datele ca întreg. Conceptul central al
Entity Framework este conceptul unei entități, care este un set de date asociate unui anumit obiect.
Anume din această cauză tehnologia Entity Framework presupune lucrul cu obiectele, nu cu tabelele.
SQL (de la numele englez Structured Query Language - limbaj de interogare structurat - care
se pronunță [es kiu el]) este un limbaj de programare specific pentru manipularea datelor în
sistemele de manipulare a bazelor de date relaționale (RDBMS), iar la origine este un limbaj bazat pe
algebra relațională. Acesta are ca scop inserarea datelor, interogații, actualizare și ștergere,
modificarea și crearea schemelor, precum și controlul accesului la date. A devenit un standard în
domeniu (standardizat ANSI-ISO), fiind cel mai popular limbaj utilizat pentru crearea, modificarea,
regăsirea și manipularea datelor de către SGBD-urile (Sistemele de Gestiune a Bazelor de Date)
relaționale. Pe lângă versiunile standardizate ale limbajului, există o mulțime de dialecte și variante,
unele proprietare, fiind specifice anumitor SGBD-uri și de asemenea conținând extensii pentru a
suporta SBD-urile (Sistemele de Baze de Date) obiectuale (obiectual-relaționale).
Setul de comenzi SQL
Comanda + Descriere:
SELECT este comanda cea mai utilizata ; este folosita pentru obtinerea datelor din bazele de date
INSERT aceste trei comenzi sunt utilizate pentru a introduce noi
UPDATE rinduri,pentru a schimba rindurile existente si stergerea
DELETE rindurilor nedorite din tabelele bazelor de date respective. (Ele sunt cunoscute in ansamblu
ca DML sau comenzi ale limbajului de manipulare a datelor.)
CREATE aceste trei comenzi sunt utilizate dinamic pentru a crea ,
ALTER utiliza si sterge orice structura de date,de exemplu,tabele,
DROP expuneri, indexi.(Ele sunt cunoscute sub numele colectiv DDL sau comenzi ale limbajelor de
definire a datelor).
GRANT aceste doua comenzi sunt utilizate pentru a da sau a lua
REVOKE drepturile de acces pentru bazele de date si structurile din Oracle.
N.B. Acestea sunt o parte a comenzilor SQL.
Fig. 1 Modificarea [Link] (conectarea la baza de date)
Fig. 2 [Link] – modelul pentru autentificare
Codul sursă – logica de logare/înregistrare
using System;
using [Link];
using [Link];
using [Link];
using [Link];
using AutoMapper;
using [Link];
using [Link];
using [Link];
namespace [Link]
{
public class UserApi
{
internal ULoginResp UserLoginAction(ULoginData data)
{
UDbTable result;
var validate = new EmailAddressAttribute();
if ([Link]([Link]))
{
var pass = [Link]([Link]);
using (var db = new UserContext())
{
result = [Link](u => [Link] == [Link] && u.
Password == pass);
}
if (result == null)
{
return new ULoginResp { Status = false, StatusMsg = "Email-
ul sau parola dvs. este greșită!" };
}
using (var todo = new UserContext())
{
[Link] = [Link];
[Link] = [Link];
[Link](result).State = [Link];
[Link]();
}
return new ULoginResp { Status = true };
}
else
{
var pass = [Link]([Link]);
using (var db = new UserContext())
{
result = [Link](u => [Link] == [Link] &&
[Link] == pass);
}
if (result == null)
{
return new ULoginResp { Status = false, StatusMsg = "Login-
ul sau parola dvs. este greșită!" };
}
using (var todo = new UserContext())
{
[Link] = [Link];
[Link] = [Link];
[Link](result).State = [Link];
[Link]();
}
return new ULoginResp { Status = true };
}
}
internal URegResp UserRegAction(URegData data)
{
UDbTable result;
using(var db = new UserContext())
{
var validate = new EmailAddressAttribute();
if ()
{
return new URegResp { Status = false, StatusMsg = "Email-
ul nu este valid!" };
}
if ([Link] > 29)
{
return new URegResp { Status = false, StatusMsg = "Email-
ul este prea lung!" };
}
//Username length
if ([Link] > 29)
{
return new URegResp { Status = false, StatusMsg = "Login-
ul este prea lung!" };
}
if ([Link] < 5)
{
return new URegResp { Status = false, StatusMsg = "Login-
ul este prea scurt!" };
}
//Password length
if ([Link] > 49)
{
return new URegResp { Status = false, StatusMsg = "Parola este prea lu
ngă!" };
}
if ([Link] < 8)
{
return new URegResp { Status = false, StatusMsg = "Parola este prea sc
urtă!" };
}
//Password match
if ([Link] != data.Repeat_Password)
{
return new URegResp { Status = false, StatusMsg = "Parolele nu corespu
nd!" };
}
var pass = [Link]([Link]);
//check if email is used
result = [Link](u => [Link] == [Link]);
if(result != null)
{
return new URegResp { Status = false, StatusMsg = "Email-
ul dat deja este folosit!" };
}
result = [Link](u => [Link] == [Link]);
if (result != null)
{
return new URegResp { Status = false, StatusMsg = "Acest username deja
este folosit!" };
}
[Link](new UDbTable
{
Username = [Link],
Email = [Link],
Password = pass,
LastLogin = [Link],
LastIp = [Link]
});
[Link]();
return new URegResp { Status = true };
//return new URegResp { Status = false, StatusMsg = "Wrong username or pas
sword!" };
//return result;
}
internal HttpCookie Cookie(string loginCredential)
{
var apiCookie = new HttpCookie("X-KEY")
{
Value = [Link](loginCredential)
};
using (var db = new SessionContext())
{
Session curent;
var validate = new EmailAddressAttribute();
if ([Link](loginCredential))
{
curent = (from e in [Link] where [Link] == loginCredential se
lect e).FirstOrDefault();
}
else
{
curent = (from e in [Link] where [Link] == loginCredential se
lect e).FirstOrDefault();
}
if (curent != null)
{
[Link] = [Link];
[Link] = [Link](60);
using (var todo = new SessionContext())
{
[Link](curent).State = [Link];
[Link]();
}
}
else
{
[Link](new Session
{
Username = loginCredential,
CookieString = [Link],
ExpireTime = [Link](60)
});
[Link]();
}
}
return apiCookie;
}
internal UserMinimal UserCookie(string cookie)
{
Session session;
UDbTable curentUser;
using (var db = new SessionContext())
{
session = [Link](s => [Link] == cookie && [Link]
pireTime > [Link]);
}
if (session == null) return null;
using (var db = new UserContext())
{
var validate = new EmailAddressAttribute();
if ([Link]([Link]))
{
curentUser = [Link](u => [Link] == [Link])
;
}
else
{
curentUser = [Link](u => [Link] == [Link]
me);
}
}
if (curentUser == null) return null;
[Link](cfg => [Link]<UDbTable, UserMinimal>());
var userminimal = [Link]<UserMinimal>(curentUser);
return userminimal;
}
}
}
Concluzie
În final pot spune că Entity Framework este o tehnologie orientată pe obiecte bazată în .NET
framework pentru lucrul cu datele. Cu ajutorul ei putem face interacțiunea cu baza de date.