2008-10-11 12 views
5

Więc budujemy aplikację zBudowanie Decoupled N-Tier Aplikacja z Entity Framework i VB.NET

  • UI Layer (internetowej, telefonu, AJAX klienta, itp)
  • życzenie/API Warstwa
  • Warstwa logiki biznesowej
  • Data Access warstwy

Naszym celem jest, aby mieć zależność Entity Framework od warstwy obsługa na dół do DAL. Oznacza to, że warstwa Sevice będzie akceptować i zwracać tylko POCO (zwykłe stare obiekty CLR).

Obecnie zajmujemy się ręcznym kodowaniem warstwy odwzorowania między warstwą usługi a warstwą logiki biznesowej, która przekształci obiekty POCO w jednostki EF i odwrotnie.

Krótko mówiąc, strona ma formę, forma ma kodbehind, która przyjmuje treść formularza, umieszcza je w POCO, wysyła do warstwy usługi. Warstwa usługi konwertuje na EF Entity, wysyła go do warstwy Business Logic, która wykonuje określone transformacje do encji, a następnie współdziała z DAL, aby go utrwalić.

Tak, jest to nieco żmudne, ale zastanawialiśmy się, czy jest lepszy sposób?

Wiem, że ktoś opublikował adapter EF Poco, ale wszystko to w języku C#, a my wolelibyśmy rozwiązanie VB.NET.

Tak, Przejście na NHibernate to opcja w ostateczności, ponieważ jesteśmy już głęboko w naszym cyklu rozwoju.

Odpowiedz

2

Powinieneś wykonywać logikę biznesową na POCO. Cały cel ORM polega na tym, że jest to szczegół implementacji. Logika biznesowa powinna zostać zaimplementowana w modelu domenowym i domenowym - w aplikacji biznesowej "domena" oznacza "biznes". DAL powinien tam być, aby wziąć POCO i utrzymywać go - w twoim przypadku oznacza to mapowanie go i utrzymywanie jednostki EF.

Jest to model teoretyczny/NHibernate, w każdym razie.