architektura aplikacji - umieszczenie klas nie reprezentujacych encji bazodanowych

0

Tak sie zastanawiam, bo mam w solucji projekty: DAL, BLL, Web i Model. Projekty DAL, BLL i Web maja referencje do projektu Model. W projekcie Model w katalogu Entities mam klasy POCO reprezentujace tabele bazodanowe. A gdzie powinienem umiescic klase dodatkowa bazujaca na klasach POCO? Przykladowo w projekcie DAL mam metode zwracajaca wynik projekcji - gdzie UniqueNotes to wlasnie ta klasa dodatkowa:

IQueryable<UniqueNotes> groups = from p in context.Notes
                                    group p by p.Title
                                    into g
                                    select new UniqueNotes
                                    {
                                    Title = g.Key,
                                    Count = g.Count()
                                    };

// ------------------------

public class UniqueNotes 
{
    public string Title { get; set; }
    public int Count { get; set; }
}

Ta klasa bedzie wykorzystywana i w projekcie DAL, i w BLL, i w Web wiec jak sadze powinienem ja umiescic w projekcie Model - tylko zastanawiam sie w jakim katalogu / jakiej przestrzeni nazw. Bo przeciez nie w Model/Entities gdzie sa klasy POCO?

0

Cos pomieszales moim zdaniem.

W projekcie DataAccess ma sie znajdowac:
#Konfiguracja bazy.
#Konfiguracja encji.
#Generyczne repo/dao
#Cos innego zwiazanego z wyciaganiem danych, ale nie bedacego czescia biznesu, na przyklad generyczna klasa PagedList.

W projekcie Model wsadz same POCO reprezentujace encje.
W projekcie BLL zaimplementuj repozytoria/serwisy zwracajace/przyjmujace View/Edit modele (ktore rowniez sie w tym projekcie znajduja)
W projekcie Web korzystaj tylko z projektu BLL, ewentualnie jakiegos projektu Common/Web.Core czy cos takiego. Nie z projektu, gdzie masz encje bazodanowe.

0

Tak w projekcie Model mam klasy POCO. Problem w tym, że w projekcie DAL korzystam z repozytoriów, które zwracają elementy typów klas POCO - i to jest normalne. Ale w jednym przypadku muszę w metodzie repozytorium zrobić grupowanie i zwrócić przez to typ nie będący typem klasy POCO i zastanawiam się katalog o jakiej nazwie w tym celu stworzyć na takie typy.

0
pytk napisał(a):

Ale w jednym przypadku muszę w metodzie repozytorium zrobić grupowanie i zwrócić przez to typ nie będący typem klasy POCO i zastanawiam się katalog o jakiej nazwie w tym celu stworzyć na takie typy.

I co zrobisz potem z tymi obiektami? Jeśli to coś, co ma być pokazane użytkownikowi, to daj do ViewModels.

0

Poczytałem trochę i utworzę w projekcie Model nowy katalog o nazwie DataTransferObjects i tam umieszczę moją klasę UniqueNotes :)

0

A jesteś pewien, że to jest DTO?

1 użytkowników online, w tym zalogowanych: 0, gości: 1