Separowanie DataAccessLayer i Business Layer

0

Mam Projekt który jest podzielony w tym momencie na dwie Solucje

  • BazaTreningowBL (business layer) , w tej solucji mam
  • Models
  • ViewModels
  • Views
  • BazaTreningowDAL (data access layer) , w tej solucji mam
  • Ogólnie metody które zwracają mi dane z BazyDanych

W przypadku DAL zastanawiałem się, co powinno mi to zwracać. DataRow/DataTable, a może Model. Ogólnie zdecydowałem się na model.
Więc zrobiłem referencje z BL do DAL, aby DAL mógł przekonwertować mi dane z bazy danych na obiekty etc). Po skończeniu pisania metod w DAL chciałem podlinkować teraz DAL do BL, co zwróciło błąd, że stworzylem "Circual Dependency".

Internety mówią, że można to naprawić za pomocą interfejsów, nie mniej jeśli taki błąd się pojawia warto jest przemyślec architekturę.

Moje próby zrozumienia i implementacji MVVM dopiero raczkują. Ale mniej więcej tak to sobie wyobraża.
Solucja BazaTreningowBL ma zdefiniowane Obiekty (Modele). Te modele są inicjalizowane w ramach potrzeb w aplikacji. Ogólnie DAL może zwracać:

  • DataRow/Table i wtedy BL będzie konwertowało to na modele podczas ich konstruowania
  • Gotowe obiekty (Modele)
    Wydaje mi się, że podejść pierwsze jest niewłaściwe, BL nie musi wiedzieć jak dane wyglądają w surowej formie.

Teoretycznie mogę przepisać Modele do DAL ale wtedy przy jakiekolwiek zmianie muszę pamiętać aby wprowadzić je w dwóch miejscach, więc .. słabo.

Mam nadzieję, ze za bardzo nie zamieszałem.
Z góry dziękuję za radę.

0

Dzielenie jednej aplikacji na solucje nie ma żadnego sensu, więc przenieś po prostu projekty z tych dwóch solucji do jednej, a Modele do oddzielnego projektu, do którego dostęp będą miały zarówno DAL jak i BL.

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