ASP.NET MVC web aplikacija

poruka: 6
|
čitano: 1.638
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
9 godina
neaktivan
offline
ASP.NET MVC web aplikacija - problem

Pozdrav,

 

početnik sam i radim na jednoj manjoj "izmišljenoj" web aplikaciji koristeći asp.net mvc s entity frameworkom (code first approachom). Na prikazu podataka u tablici ne znam kako da prikažem podatke iz druge tablice, detaljnije objašnjeo, primjerice, imam model Turist, JedinicaIznajmljivanja, Objekt i Mjesto i Iznajmljivanje. Mjesto je vezano na Objekt, JedinicaIznajmljivanja je vezana na Objekt (veze 1: n), a Iznajmljivanje se sastoji od primarnih ključeva iz JediniceIznajmljivanja i Turista. Objekt je zamišljeno da je to recimo neki hotel a jedinicaIznajmljivanja jedna soba u tome hotelu, nije sada bitno je li informacijski sustav logičan ili nije jer me sličan problem muči na još mjesta.

 

Kada u controleru za Iznajmljivanje "slažem" ono što ću dati u View, mogu Includeat samo ono što je vezano na Iznajmljivanje (Turista i JedinicuIznajmljivanja), ne mogu vezati Objekt ili Mjesto, tj njihove atribute.

     public ActionResult Index()
        {
            var iznajmljivanje = _context_iznajmljivanje.Iznajmljivanje
                .Include(a => a.JedinicaIznajmljivanja)
                .Include(a => a.Turist)
                .ToList();
            return View(iznajmljivanje);
        }

Ukoliko napišem još jedan .Include(a => a.Objekt) to ne prolazi pa pretpostavljatm jer nije dikretno vezano na Iznajmljivanje nego je vezano na JedinicuIznajmljivanja, a na Objekt mi je vezano Mjesto. Htio bih u prikazu Iznajmljivanja prikazati i naziv mjesta koji se nalazi u modelu Mjesto ili neki atribut koji je vezan direktno na Objekt poput adrese. Znači ovo u Viewu ne prolazi:

@foreach (var item in Model) {
    <tr>
        <td>
            @item.JedinicaIznajmljivanja.Objekt.Mjesto.NazivMjesta
        </td>

...

}

 

Svjestan sam da sam možda od početka počeo krivo raditi, ali sada je kasno, ako bi netko imao neki jednostavan i dobar prijedlog bio bih vezaom zahvalan. :)

 
0 0 hvala 0
17 godina
offline
ASP.NET MVC web aplikacija

Ako si uredno postavio model sa virtual ICollection<T> onda bi ti lazy load sam trebao radit, odnosno, kad pristupaš child objektima, Context bi ti ih sam trebao povući.

 

Ako pak ubijaš context objekt u DAL-u (koristiš "using") onda trebaš eksplicitno loadati child objekte: https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx

 

 

 

 

Rvat katolik!
Poruka je uređivana zadnji put čet 10.8.2017 14:29 (tnakir).
 
0 0 hvala 0
9 godina
neaktivan
offline
Re: ASP.NET MVC web aplikacija

Nije slučaj ni jedno ni drugo. Budem pokušao složiti ICollection<T>.

17 godina
offline
Re: ASP.NET MVC web aplikacija
Sucko kaže...

Nije slučaj ni jedno ni drugo. Budem pokušao složiti ICollection<T>.

Relacije u bazi (i sam lazyload koji je po defaultu On) se radi sa 

 

npr za one-to-many relaciju

 

public class ParentClass

{

  public int ID {get; set; }

  public virtual ICollection<ChildClass> Children { get; set; }

}

 

public class ChildClass

{

  public int ID { get; set; }

  public virtual ParentClass parentClass {get; set;}

}

 

Ovako će ti relacije u bazi biti ispravne, i lazy load će ti raditi.

Rvat katolik!
9 godina
neaktivan
offline
Re: ASP.NET MVC web aplikacija

Uspio sam složiti, probao sam još i jučer, pa potrgao cijeli model, migracije....sada sam baš išao načinom kako si napisao i uspio sam (iako sam bio veoma pesimističan da ću uspijeti srediti). Puno ti hvala :)

17 godina
offline
ASP.NET MVC web aplikacija

Bilo bi dobro da pročitaš kakvu knjigu o MVC frameworku, imaš ih i za skinit ako ti se ne kupuje, gdje ćeš naučiti osnove kako slagati modele, code-first, model-first, database-first pristup, repozitorije itd.

 

ASP.Net MVC je zbilja moćan framework ako ga koristiš kako treba.

Rvat katolik!
 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice