Introduction to EntityFramework - Databases Advanced - Entity Framework - октомври 2016


Материали от темата

Съдържание на документа

Introduction to Entity framework 

ORM Concepts, Entity Framework, DbContext, CRUD Operations

SoftUni Team

Technical Trainers

Software University


Table of Contents

ORM Technologies – Basic Concepts

Entity Framework – Overview

Reading Data with EF

CRUD operations using Entity Framework

Extending Entity Classes






Object-Relational Mapping (ORM) is a programming technique for automatic mapping data and schema

Between relational database tables and object-oriented classes and objects

ORM creates a "virtual object database" 

Can be used from within the programming language (C# or Java…)

ORM frameworks automate the ORM process

A.k.a. Object-Relational Persistence Frameworks

ORM Technologies

ORM Frameworks

ORM frameworks typically provide the following functionality:

Creating object model by database schema (DB first model)

Creating database schema by object model (code first model)

Querying data by object-oriented API (e.g. LINQ queries)

Data manipulation operations

CRUD – create, retrieve, update, delete

ORM frameworks automatically generate SQL to perform the requested data operations


ORM Advantages and Disadvantages

Object-relational mapping (ORM) advantages

Developer productivity: writing less code

Abstract from differences between object and relational world

Complexity hidden within the ORM

Manageability of the CRUD operations for complex relationships

Easier maintainability


Reduced performance (due to overhead or incorrect ORM use)

Reduces flexibility (some operations are hard for implementing)


ORM Frameworks in .NET

Built-in ORM tools in .NET Framework and VS

Entity Framework (LINQ-to-Entities)

LINQ-to-SQL (Not used)

Both combine entity class mappings and code generation, SQL is generated at runtime

Third party ORM tools


Telerik OpenAccess ORM



Entity Framework (EF) is the standard ORM framework for .NET

Provides a run-time infrastructure for managing SQL-based database data as .NET objects

The relational database schema is mapped to an object model

Visual Studio provides built-in tools for generating Entity Framework data models

Data mappings consist of C# classes, XML and attributes

EF provides a powerful data manipulation API

CRUD operations and complex querying with LINQ

Overview of EF


Maps tables, views, stored procedures and functions as .NET objects

Provides LINQ-based data queries

Executed as SQL SELECTs on the database server 

Parameterized queries

Built-in CRUD operations – Create / Read / Update / Delete

Creating / deleting / upgrading the database schema

Tracks changes to in-memory objects

Entity Framework Features


Works with any relational database

You need an Entity Framework data provider

Work with a visual model, database or with your own classes

Has very good default behavior

Very flexible for more granular control

Open source – independent release cyclegithub.com/aspnet/EntityFramework 

Entity Framework Features (2)


EF: Basic Workflow

Write & execute query over IQueryable

EF generates & executes an SQL query in the DB

Define the data model (use a DB Visual designer or code first)


EF: Basic Workflow (2)

Modify data with C# code and call "Save Changes"

Entity Framework generates & executes SQL command to modify the DB

EF transforms 
the query
results into 
.NET objects

EF Components

The DbContext class

DbContext holds the database connection and the entity classes

Provides LINQ-based data access

Implements identity tracking, change tracking, and API for CRUD operations

Entity classes

Hold entities (objects with their attributes and relations)

Each database table is typically mapped to a single C# entity class


EF Components (2)

Associations (relationship mappings)

An association is a primary key / foreign key-based relationship between two entity classes

Allows navigation from one entity to another

Concurrency control

Entity Framework uses optimistic concurrency control 

No locking by default

Automatic concurrency conflict detection

var courses = student.Courses.Where(…);


Reading Data with 
Entity Framework


The DbContext class is generated by the Visual Studio designer

DbContext provides:

Methods for accessing entities (object sets) 

Methods for creating new entities (Add() methods)

Ability to manipulate database data though entity classes

 Read, modify, delete, insert

Easily navigate through the table relationships

Executing LINQ queries as native SQL queries

Create the DB schema in the database server

The DbContext Class


First create instance of the DbContext:

In the constructor you can pass a database connection string and mapping source

DbContext properties:

Connection – the SqlConnection to be used

CommandTimeout – SQL commands execution timeout in the DB

All entity classes (tables) are listed as properties

e.g. IDbSet<Employee> Employees { get; }

Using DbContext Class

var softUniEntities = new SoftUniEntities();


Executing LINQ-to-Entities query over EF entity:

Employees property in the DbContext:

Reading Data with LINQ Query

public partial class SoftUniEntities : DbContext


  public IDbSet<Employee> Employees { get; set; }

  public IDbSet<Project> Projects { get; set; }

  public IDbSet<Department> Departments { get; set; }


using (var context = new SoftUniEntities())

{ var employees = 

    from e in context.Employees

    where e.JobTitle == "Design Engineer"

    select e; }

This will be translated to an SQL query by EF


We can also use extension methods for constructing the query

Find element by id

Reading Data with LINQ Query

using (var context = new SoftUniEntities())


  var project = context.Projects.Find(2);



using (var context = new SoftUniEntities())


  var employees = context.Employees

      .Where(c => c.JobTitle == "Design Engineering")

      .Select(c => c.FirstName)



This is called projection

ToList() method executes the query


Printing the native database SQL command behind a query:

This will print the SQL native query executed at the database server to select all Employees

Can be printed to file using StreamWriter class instead of Console class

Logging the Native SQL Queries

var query = context.Employees;


with EF


To create a new database row use the method Add(…) of the corresponding collection:

SaveChanges() method executes the SQL insert / update / delete commands in the database

Creating New Data

var project = new Project()


  Name = "Judge System", 

  StartDate = new DateTime(2015, 4, 15),





This will execute an SQL INSERT

Create a new project object

Mark the object for inserting


We can also add cascading entities to the database:

This way we don't have to add Project individually

They will be added when the Employee entity (employee) is inserted to the database

Cascading Inserts

Employee employee = new Employee();

employee.FirstName = "Petya";

employee.LastName = "Grozdarska";

employee.Projects.Add(new Project { Name = "SoftUni Conf"} ); 




DbContext allows modifying entity properties and persisting them in the database

Just load an entity, modify it and call SaveChanges()

The DbContext automatically tracks all changes made on its entity objects

Updating Existing Data

Employees employee =


employees.FirstName = "Alex";


This will execute an SQL UPDATE

This will execute an SQL  SELECT to load the first order


Delete is done by Remove() on the specified entity collection

SaveChanges() method performs the delete action in the database

Deleting Existing Data

Employees employee =




Mark the entity for deleting at the next save

This will execute the SQL DELETE command

Extending Entity Classes

Add Methods like ToString(), Equals(), etc…


When using "database first" or "model first" entity classes are separate .cs files, generated by T4 template XXXModel.tt

Each time we update the EntitiesModel from the database all files are generated anew

If we add methods like ToString(), they will be lost

Entity classes are "partial"  extend them in another file

When using "code first" this is not a problem

Extending Entity Classes


ORM frameworks maps database schema to
objects in a programming language

Facilitates development process

Entity Framework is the standard ORM for C#

Can work with any database if there is provider

Supports CRUD operations with DbContext

Provides LINQ-based data queries

Translated to SQL at runtime

Automatically tracks changes to in-memory objects


Introduction to Entity Framework 



This course (slides, examples, demos, videos, homework, etc.)
is licensed under the "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International" license


Attribution: this work may contain portions from

"Databases" course by Telerik Academy under CC-BY-NC-SA license

Free Trainings @ Software University

Software University Foundation – softuni.org

Software University – High-Quality Education, Profession and Job for Software Developers


	Software University @ Facebook


	Software University @ YouTube


	Software University Forums – forum.softuni.bg