4. Crem legtura dintre tabela clienti i tabela localiti. (vezi lucrarea 2 Crearea relaiilor)
b. Specificm numele n csua de text de jos i dm click pe Add. Aici am denumit magazin.edmx c. Se deschide un Data Entity Wizard, unde selectm Generate from database pentru a ne genera automat modelele, apoi dm Next.
d. Apare urmtorul pas de selectare a conexiunii la baza de date, n cazul nostru fiind magazin.mdf, se d Next. e. La urmtorul pas ni se cere s selectm obiectele care s le importe la nivelul modelelor, selectm Tables i dm Finish:
Si aici vom crea cte un repository pentru fiecare dintre modele ca i n lucrarea precedent: Crem n Models clasa clientirepository. Click dreapta pe Models > Add > Class. Codul afferent lucrului cu Entity Models este puin diferit fa de cel pentru LINQ:
public class clientirepository { //accesul la baza de datese face printr-un obiect Entities private magazinEntities db = new magazinEntities(); public List<clienti> GetAllClients() { var list = from clist in db.clientis select clist;//echivalent cu db.clientis return list.ToList<clienti>(); } public clienti GetClientById(int idclient) { return db.clientis.Single<clienti>(d => d.idclient == idclient); } public void AddClient(clienti client) { db.AddToclientis(client); db.SaveChanges(); } public void DeleteClient(clienti client) { db.DeleteObject(client); db.SaveChanges(); }
Similar cu exemplul din laboratorul precedent, pentru a testa funcionalitatea repositoriului crem un controller de Test astfel: 1. Click dreapta pe Controllers> Add > Controller TestController; 2. Adaugam urmatorul cod pentru a testa repository-ul clienti; 3. Cream un View empty simplu (nu strongly-typed) pentru Controllerul Test (click dreapta in Controller>Add View) in care adaugam codul @ViewData[msg] pentru a vedea mesajul de testare. 4. Introducem urmatorul cod in clasa controllerului Test:
public class TestController : Controller { //ATENTIE: va trebui s specificati namespace-ul Models cu clauza using // GET: /Test/ public ActionResult Index() { return View(); } //URL: localhost:[port]/Test/ShowClients public ActionResult ShowClients() { Models.clientirepository clientirepo = new Models.clientirepository(); List<Models.clienti> query = clientirepo.GetAllClients(); //interfata la o colectie de inregistrari LINQ //creare unui iterator atasat colectiei de inregistrari LINQ IEnumerator<Models.clienti> cl_list = query.GetEnumerator(); //iterarea colectiei utilizand pattern-ul de iterator while (cl_list.MoveNext()) { ViewData["msg"] = ViewData["msg"] + cl_list.Current.nume + "," + cl_list.Current.prenume + "," + cl_list.Current.adresa + "|"; } return View("Test"); } //URL: localhost:[port]/Test/InsertClient public ActionResult InsertClient() {//introduce doi clienti noi in bd Models.clientirepository clientirepo = new Models.clientirepository();