Entity Framework

Entity Framework er en open source ORM (Object Relational Mapping), som kan forstå din domæne model og så automatisk generere det meste af det kode (SQL) man ellers skulle skrive i sit data access layer (DAL). Microsofts implementering af Entity Framework fungerer godt med forskellige databaser: SQL Server, MySql, Oracle, PostgreSQL, SQLite og mange andre.

Data Access Layer (DAL)

I software hvor man bruger databaser, har man typisk lavet et data access lag (DAL). I data acecss laget skriver man den kode der kommunikere med databasen. Det kunne ofte være SQL kommandoer, som implementerer de 4 CRUD operationer: create, read, update og delete. Disse 4 operationer implementerer man så for hver entitet man har i sin domæne model.

Det er også helt fint, men der opstår altid et eller andet som gør at domæne modellen ændre sig. Måske skal der lige tilføjes en information til en entitet. Måske skal der være en ny relationen mellem 2 entiteter. Og når det sker, så er der en stor opgave i at opdatere DAL'en, det kan man bruge rigtig meget tid på. Det er god kilde til at lave fejl.

Entity Framework er en Object Relational Mapping (ORM)

For at afhjælpe udfordringerne med et DAL man bruger meget tid på at vedligeholde, så har nogle gode softwarefolk fundet på at at lave en object relational mapper (ORM). Ideen med en ORM er at den automatisk kan generere koden in DAL'en. På den måde undgår man at bruge en masse tid på at opdatere den og at man fjerner nogle kilder til fejl.

Der findes mange forskellige ORM'er til de forskellige programmerings sprog. Tag evt. et kig på denne liste over ORM software.

 

Entity Framework (EF)

Entitty framework er Microsofts implementering af en ORM som kan anvendes i deres .NET udviklings værktøjer. Det er implementeret på en rigtig fin måde. Du opretter entiterne fra din domæne model som f.eks. C# klasser og fortæller entity framework hvordan man kommunikere med den database du har valgt. Så kan EF automatisk oprette databasen og alle de nødvenfige tabeller. Efterfølgende kan den også opdatere databasen og DAL'en, når du får brug for at lave ændringer i domæne modellen. Du vil også automatisk få adgang til metoder som implementerer de 4 CRUD operationer, uden at du selv skal skrive SQL kode eller lignende.

Læs evt. lidt mere om entity framework her: Entity Framework Core

EF understøtter også mange forskellige databaser. Det betyder f.eks. at det er ret nemt at skifte den underliggende database, noget som ellers kunne være en ret uoverskuelig opgave, pga. variationer i SQL dealekterne.

Her er en liste over mulige database providers i EF: Database Providers

Projekter

Jeg har brugt entity framework i alle de .NET projekter jeg har arbejdet på de sidste år. Senest har jeg brugt det i mit online booking system. EF er særligt stærkt når man også anvender clean architecture, de 2 værktøjer passer rigtig godt sammen.