Презентация

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

http://softuni.bg


Table of Contents

ORM Technologies – Basic Concepts

Entity Framework – Overview

Reading Data with EF

CRUD operations using Entity Framework

Extending Entity Classes

2


3



sli.do
#Entity

Questions



5

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

6


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

Disadvantages:

Reduced performance (due to overhead or incorrect ORM use)

Reduces flexibility (some operations are hard for implementing)

7


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

Nhibernate

Telerik OpenAccess ORM

8



10

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


11

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


12

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)


13

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)


14

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

15


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(…);

16


Reading Data with 
Entity Framework


18

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


19

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();


20

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


21

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);

  Console.WriteLine(project.Name);

}

using (var context = new SoftUniEntities())

{

  var employees = context.Employees

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

      .Select(c => c.FirstName)

      .ToList();

}

This is called projection

ToList() method executes the query


22

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;

Console.WriteLine(query.ToString());


with EF


24

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),

};



context.Projects.Add(project);

context.SaveChanges();

	

This will execute an SQL INSERT

Create a new project object

Mark the object for inserting


25

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"} ); 

softUniEntities.Employees.Add(employee);

softUniEntities.SaveChanges();


26

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 =

  softUniEntities.Employees.First();

employees.FirstName = "Alex";

context.SaveChanges();

This will execute an SQL UPDATE

This will execute an SQL  SELECT to load the first order


27

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

SaveChanges() method performs the delete action in the database

Deleting Existing Data

Employees employee =

  softUniEntities.Employees.First();

softUniEntities.Employees.Remove(employee);

softUniEntities.SaveChanges();

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…


29

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


30

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



Summary


Introduction to Entity Framework 

https://softuni.bg/courses/


License

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

32

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

softuni.bg 

	Software University @ Facebook

	facebook.com/SoftwareUniversity

	Software University @ YouTube

	youtube.com/SoftwareUniversity

	Software University Forums – forum.softuni.bg