W tym odcinku pochylimy się nad ORMami. Czy obiecywane założenia, które były obiecywane wraz z ich wprowadzeniem tj. bez kosztowe i bezproblemowe wymienianie bazy danych jest faktem czy to tylko mrzonki i w ogóle można by ich się pozbyć z korzyścią dla projektów. A może jednak klepanie SQLi z palca to zamierzchłe czasy i już do nas nie wrócą?
Poprzedni wpis nt. biblioteki Dapper był tylko małą zachętą do sprawdzenia tej biblioteki, przetestowania jej i sposobu jej integracji w Twoim kodziku. Tutaj poruszę temat trochę szerzej, z punktu widzenia kategorii ORMów. Kodziku nie będzie 😉
Najbardziej popularnym ORMem w świecie .NETu jest bez wątpienia Entity Framework. Posiada on wiele wbudowanych mechanizmów ułatwiających pracę z bazą danych, ale odpokutowuje to pewnymi niedogodnościami. Nie należy on do najwydajniejszych ORMów, generuje czasami pokrętne zapytania, oraz łatwo można wpaść w tarapaty, np. przez problem N+1. Istnieją również alternatywy, jak np. nHibernate, czy Dapper! Jak sami twórcy wskazują, a są to ludzie od StackOverflow, Dapper jest królem wśród micro ORMów pod wzgl...
Bazy danych i XML 1970 dni, 2 godziny, 4 minuty temu 254 źrodło rozwiń
Założę, że programujesz obiektowo. W takim razie niemalże na pewno zdarzyło Ci się stanąć przed wyborem bibliotek w momencie tworzenia rozwiązania lub przeglądać stos technologiczny istniejącego projektu. Myślę, że się nie pomylę, jeżeli napiszę, że w większości, jeśli nie we wszystkich przypadkach przed Twoimi oczami mignął jakiś ORM. Czasem okazuje się też, że SQL jest wymagany tylko i wyłącznie dlatego, że ten konkretny maper stoi nad tą, a nie inną technologią bazodanową.
Bazy danych i XML 2242 dni, 1 godzinę, 39 minut temu 186 źrodło rozwiń
Many web applications use databases for persistent data storage, and using Object Relational Mapping (ORM) frameworks is a common way to develop such database-backed web applications. Unfortunately, developing efficient ORM applications is challenging, as the ORM framework hides the underlying database query generation and execution. This problem is becoming more severe as these applications need to process an increasingly large amount of persistent data. Recent research has targeted specific aspects of ...
Bazy danych i XML 2331 dni, 1 godzinę, 32 minuty temu 42 źrodło rozwiń
Persystencja zawsze budzi wiele emocji i skrajnych opinii. W tym artykule pokażemy, jakie opcje są do wyboru przy persystowaniu agregatów z DDD i jak pragmatycznie do nich podejść. Przejdziemy kolejno przez bezpośredni zapis agregatów, robienie Snapshotów, tworzenie osobnego modelu danych na podstawie zdarzeń, a na koniec dotrzemy do Event Sourcingu.
Sztuka programowania 2457 dni, 1 godzinę, 34 minuty temu 283 źrodło rozwiń
Kiedy potrzebujemy użyć jakiegoś ORM’a (Object – Relational Mapping) w naszym projekcie, z reguły pierwsza myśl jaka przychodzi nam do głowy to Entity Framework. Dzięki temu narzędziu w bardzo prosty i szybki sposób jesteśmy w stanie skonfigurować połączenie z naszą bazą danych i odwzorować nasze tabele w projekcie. W najnowsze...
Architektura 2688 dni, 14 godzin, 43 minuty temu 383 źrodło rozwiń
Entity Framework (and other ORMs) are in general great pieces of software that makes developers lives so much easier by letting us thinking about objects when we’re working with data persisted in some underlying database. This makes development much easier than writing raw SQL queries. But some of us tend to get too comfy and forgetting about things that lies beneath our beautiful, object oriented code. After all we have Entity Framework, we shouldn’t wrap our heads around SQL stuff. But how about actual...
Daj się poznać 2017 2778 dni, 8 minut temu 191 źrodło rozwiń
Projektując bazę danych, z którą będzie komunikować się nasza aplikacja, natrafiamy czasem na przypadki, w których warto zastosować dziedziczenie między klasami encyjnymi. Pracując z popularną biblioteką NHibernate mamy do dyspozycji kilka sposobów na zamodelowanie takiej sytuacji. Trzeba jednak uważać na to, by przy okazji nie wpaść w nieoczekiwaną pułapkę.
Daj się poznać 2017 2818 dni, 12 godzin, 59 minut temu 97 źrodło rozwiń
Every programmer when working with databases will use a framework, which facilitates and speeds up development time. It is no different with me. I never liked ADO.NET. Taking out the data and storing it in a DataSet or DataTable that were not strongly typed is not a best idea. Especially when someone else on the later stage had to work with this code and no one actually knows what the author had in the mind writing it. For many years, I enjoyed the heavi...
Sztuka programowania 2905 dni, 27 minut temu 234 źrodło rozwiń
We wpisie porównuje szybkość działa biblioteki Simple.Data z Entity Framework.
Sztuka programowania 2937 dni, 29 minut temu 364 źrodło rozwiń
Let's assume that we have a simple table GL_Task which looks like this I was asked to rewrite simple SQL query SELECT Id,Name,IdProject FROM GL_Task WHERE Name = 'First task' OR Id IN (3,4 /more id's to come/) using NHibernate's QueryOver API. As simple as it may seem, solution for this particular problem is not straightforward. My first (not so clever) attempt was simply combining WhereRestrictionOn and Where clause var result = session.QueryOver
Simple.Data jest lekkim frameworkiem dla .NET, który zapewnia dostęp do bazy w stylu ORM, ale bez obiektów (Object), bez wymogu łączenia się do relacyjnej bazy danych (Relational) a także bez generowania relacji (Mapping)! Wszystko dzięki typom dynamicznym w .NET 4!
Bazy danych i XML 4094 dni, 2 godziny, 39 minut temu 613 źrodło rozwiń
Entity Framework, has given with last update, migrations at code first, undoubtedly it’s the best feature in this update. This tool is very helpful if we change something at our model, and then we can simply upgrade our database. Moreover it can fulfill role as a database versioning, because we can easily to manage our updates and freely manage between them.
Bazy danych i XML 4325 dni, 19 godzin, 55 minut temu 76 źrodło rozwiń
Witam Ostatnio napotkałem na dość ciekawy wyjątek podczas wykonywania NHibernatowego inserta. W bazie danych mam prostą tabelę Do takiej tabeli został stworzony model namespace Model { public class Appointment { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual DateTime StartDate { get; set; } public virtual TimeSpan Duration { get; set; } } } oraz mapping namespace Model.Mappings { public class AppointmentM...
Światy: obiektowy i relacyjny nie pasują do siebie. Dlatego tak popularne są mappery obiektowo-relacyjne, dzięki którym życie staje się łatwiejsze. Ale jaki mapper wybrać?
Bazy danych i XML 4991 dni, 18 godzin, 38 minut temu 202 źrodło rozwiń
Kilka dni temu opublikowany został najnowszy numer (02/2011) magazynu SDJournal. Spośród wszystkich artykułów chciałbym szczególnie polecić jeden, którego tematyka jest mi ostatni czasy bardzo bliska. Mam tu na myśli artykuł NHibernate vs Entity Framework. Frameworki ORM dla platformy .NET autorstwa Agnieszki Polak oraz Przemysława Krysztowiaka...
To ostatni, przynajmniej na razie post o NHibernate. Jest on podsumowaniem wszystkich moich wysiłków w kierunku poznania podstaw tego ORMa. Wcześniejsze etapy prac przedstawiłem w postach o mapowaniach NHibernate'a oraz zarządzaniu sesjami. Zmiany w klasie SessionManager W porównaniu do klasy przedstawionej w poprzednim poście musiałem wprowadzić niewielkie zmiany. Zdecydowałem się jednak zrobić ją klasą statyczną oraz przeniosłem funkcję MakeTransaction do głównej klasy dostępu do danych, oto jej a...
Bazy danych i XML 5190 dni, 9 godzin, 56 minut temu 141 źrodło rozwiń
Mapowanie relacji pomiędzy tabelami na asocjacje klas to dusza ORMow. To przy okazji najbardziej problematyczne zagadnienie. Zagadnienie relacji jest szerokie jak rzeka i nie sposób opisać wszystkich przypadków. Najważniejsze z mojego punktu widzenia jest jednak zrozumieć sedno sprawy, zrozumienia tego brakowało przy moich pierwszych próbach i przyznam że zjadło mi to wiele godzin. Dzięki zastosowaniu klas POCO możemy posługiwać się niedostępnymi dla modelu DataSetów kolekcjami i powiązaniami ...
LLBLGen Pro – płatny O/R Mapper. Czy warto?A cóż to i dlaczegóż to Niedawno Szymon napisał posta o O/R Mapperach. Korzystając z impulsu postanowiłem także popełnić co nieco w tym temacie, tym bardziej że tą konkretną notkę zaplanowałem przynajmniej 2 miesiące temu. Może ona być uzupełnieniem dla projektów wspomnianych przez Szymona, czyli NHibernate, Linq2Sql i Entity Framework.
Bazy danych i XML 5635 dni, 17 godzin, 20 minut temu 76 źrodło rozwiń