Jesteśmy obecnie w sytuacji, w której mamy wybór pomiędzy użyciem gotowego mapera relacyjno-obiektowego lub stworzeniem własnego
Mamy starszą aplikację (ASP.NET + SQL Server), w której warstwa danych i warstwa biznesowa są niestety połączone. System nie jest szczególnie skomplikowany pod względem dostępu do danych. Odczytuje dane z dużej grupy (35–40) powiązanych ze sobą tabel, manipuluje nimi w pamięci i zapisuje je z powrotem w innych tabelach w formacie podsumowania. Mamy teraz okazję do pewnego refaktoryzacji i szukamy technologii kandydujących do wykorzystania w celu oddzielenia i właściwej struktury naszego dostępu do danych.
Niezależnie od wybranej technologii, chcielibyśmy:
- mają obiekty POCO w naszym Modelu Domeny, które są Ignoranckie
- mieć warstwę abstrakcji, która pozwala nam na testowanie jednostkowe obiektów naszego modelu domeny w stosunku do próbnego źródła danych
Jest oczywiście wiele rzeczy na ten temat, jeśli chodzi o Wzorce i Struktury itp.
Osobiście nalegam na użycie EF w połączeniu z ADO.NET Unit Testable Repository Generator / POCO Entity Generator . Spełnia wszystkie nasze wymagania, może być łatwo zawarty w strukturze Repo / UnitOfWork, a nasza struktura DB jest wystarczająco dojrzała (już przeszła proces refaktoryzacji), dzięki czemu nie będziemy dokonywać codziennych zmian w modelu.
Jednak inni w grupie sugerują projektowanie / tworzenie własnego DAL całkowicie od zera. (Niestandardowe DataMappery, DataContexts, Repozytorium, Interfejsy wszędzie, Nadmiar umiejętności wstrzykiwania zależności do tworzenia konkretnych obiektów, Niestandardowe tłumaczenie zapytań LINQ na podstawowe, Niestandardowe implementacje buforowania, Niestandardowe implementacje FetchPlan ...) lista jest długa i szczerze mówiąc strajkuje ja jako szaleństwo.
Niektóre z omawianych argumentów to: „Cóż, przynajmniej będziemy kontrolować nasz własny kod” lub „Och, użyłem L2S / EF w poprzednim projekcie i to było tylko bóle głowy”. (Chociaż wcześniej korzystałem zarówno z produkcji, jak i zauważyłem, że problemy są nieliczne i dalekie od siebie i są bardzo łatwe do rozwiązania)
Więc czy któryś z twoich doświadczonych deweloperów / architektów ma jakieś słowa mądrości, które mogą pomóc mi oderwać ten produkt od tego, co wydaje mi się, że to będzie całkowita katastrofa. Nie mogę nie myśleć, że jakakolwiek korzyść uzyskana dzięki uniknięciu problemów z EF zostanie utracona równie szybko, jak próba ponownego wynalezienia koła.