Introduction to Entity Framework

Slides:



Advertisements
Similar presentations
ORM Technologies and Entity Framework (EF)
Advertisements

Design Patterns: Structural Design Patterns
NoSQL Databases NoSQL Concepts SoftUni Team Technical Trainers Software University
Entity Framework Performance SoftUni Team Technical Trainers Software University
ORM Technologies and Entity Framework (EF) ORM Concepts, Entity Framework, DbContext, CRUD Operations SoftUni Team Technical Trainers Software University.
Using SQL Connecting, Retrieving Data, Executing SQL Commands, … Svetlin Nakov Technical Trainer Software University
ORM Basics Repository Pattern, Models, Entity Manager Ivan Yonkov Technical Trainer Software University
Entity Framework (EF) ORM and Entity Framework Code First. CRUD Operations SoftUni Team Technical Trainers Software University
XML Processing SoftUni Team Database Applications Technical Trainers
Software Technologies
Version Control Systems
Auto Mapping Objects SoftUni Team Database Applications
Working with Fluent API Inheritance Strategies
Functional Programming
Introduction to Entity framework
Databases basics Course Introduction SoftUni Team Databases basics
C# Basic Syntax, Visual Studio, Console Input / Output
Data Structures Course Overview SoftUni Team Data Structures
C# Basic Syntax, Visual Studio, Console Input / Output
Web API - Introduction AJAX, Spring Data REST SoftUni Team Web API
Introduction to MVC SoftUni Team Introduction to MVC
Deploying Web Application
PHP MVC Frameworks Course Introduction SoftUni Team Technical Trainers
Reflection SoftUni Team Technical Trainers Java OOP Advanced
C# Database Fundamentals with Microsoft SQL Server
ASP.NET Integration Testing
ASP.NET Unit Testing Unit Testing Web API SoftUni Team ASP.NET
Mocking tools for easier unit testing
Parsing JSON JSON.NET, LINQ-to-JSON
EF Code First (Advanced)
PHP MVC Frameworks MVC Fundamentals SoftUni Team Technical Trainers
C# Databases Advanced with Microsoft SQL Server
Database Design and Rules
EF Advanced Querying Optimize Performance SoftUni Team Advanced
EF Relations Object Composition
Entity Framework: Code First
Parsing XML XDocument and LINQ
Entity Framework DB From Code, OOP Introduction
Data Definition and Data Types
Databases advanced Course Introduction SoftUni Team Databases advanced
Entity Framework: Relations
Caching Data in ASP.NET MVC
Fast String Manipulation
Array and List Algorithms
MVC Architecture, Symfony Framework for PHP Web Apps
Transactions in Entity Framework
C# Advanced Course Introduction SoftUni Team C# Technical Trainers
C#: ASP.NET MVC Overview
Databases Advanced Course Introduction SoftUni Team Databases Advanced
Best Practices and Architecture
Best practices and architecture
How to connect natively?
Introduction to Databases
Data Definition and Data Types
Multidimensional Arrays, Sets, Dictionaries
Extending functionality using Collections
ASP.NET REST Services SoftUni Team ASP.NET REST Services
Exporting and Importing Data
Manual Mapping and AutoMapper Library
Functional Programming
C# Advanced Course Introduction SoftUni Team C# Technical Trainers
Exporting and Importing Data
Introduction to TypeScript & Angular
Hibernate (JPA) Code First Entity Relations
Entity Framework By: Casey Griffin.
Version Control Systems
Entity Framework Advanced Querying SoftUni Team Technical Trainers
Lean .NET stack for building modern web apps
JavaScript: ExpressJS Overview
Iterators and Generators
Presentation transcript:

Introduction to Entity Framework ORM Concepts, CRUD Operations Entity Framework SoftUni Team SQL Technical Trainers Software University http://softuni.bg © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Table of Contents ORM Technologies – Basic Concepts Entity Framework – Overview Reading Data with EF CRUD Operations Using Entity Framework Working with LINQ © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

sli.do #Entity Questions © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Object-Relational Mapping Introduction to ORM Object-Relational Mapping

ORM Frameworks Object-Relational Mapping (ORM) is a programming technique for automatic mapping of data and schema Creates a "virtual object database" for the programming language ORM frameworks automatically generate SQL to perform data operations 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)

ORM Advantages and Disadvantages Object-relational mapping (ORM) advantages Developer productivity: writing less code Abstract from differences between object and relational world 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) © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Entity Framework Overview and Features

github.com/aspnet/EntityFramework Overview and Features Entity Framework (EF) is the standard ORM framework for .NET Integrated with Visual Studio Provides LINQ-based data queries and CRUD operations Automatic change tracking of in-memory objects Works with any relational database Open source with independent release cycle github.com/aspnet/EntityFramework

EF: Basic Workflow Define the data model (use a DB Visual designer or code first) Write & execute query over IQueryable EF generates & executes an SQL query in the DB

EF: Basic Workflow (2) EF transforms the query results into .NET objects Modify data with C# code and call "Save Changes" Entity Framework generates & executes SQL command to modify the DB

Entity Framework in Visual Studio To add EF support to a project in Visual Studio: Select Add  New Item… from the project's context menu Chose "From Database" Select ADO.NET

Entity Framework in Visual Studio (2) Pick server Select after creating Pick database

EF Components The DbContext class Entity classes 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 © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

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(…); © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Querying the DB using Entity Framework Reading Data Querying the DB using Entity Framework

The DbContext Class Methods for accessing entities (object sets) 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

Using 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; } var softUniEntities = new SoftUniEntities();

Reading Data with LINQ Query Executing LINQ-to-Entities query over EF entity: Employees property in the DbContext: 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 public partial class SoftUniEntities : DbContext { public IDbSet<Employee> Employees { get; set; } public IDbSet<Project> Projects { get; set; } public IDbSet<Department> Departments { get; set; } }

Reading Data with LINQ Query We can also use extension methods for constructing the query Find element by id 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 using (var context = new SoftUniEntities()) { var project = context.Projects.Find(2); Console.WriteLine(project.Name); }

LINQ: Simple Operations Where() Searches by given condition First() / FirstOrDefault() Gets the first matched element Last() / LastOrDefault() Gets the last matched element Select() Makes projection (conversion) to another type OrderBy() / ThenBy() / OrderByDescending() Orders a collection

LINQ: Simple Operations (2) Any() Checks if any element matches a condition All() Checks if all elements match a condition Distinct() Returns only the unique elements Skip() / Take() Skips or takes X number of elements

Logging the Native SQL Queries Printing the native database SQL command behind a query: Queries can be monitored with Express Profiler var query = context.Employees; Console.WriteLine(query.ToString()); https://expressprofiler.codeplex.com/

CRUD Operations With Entity Framework

Create a new project object Mark the object for inserting Creating New Data To create a new database row use the method Add(…) of the corresponding collection: Create a new project object var project = new Project() { Name = "Judge System", StartDate = new DateTime(2015, 4, 15), }; context.Projects.Add(project); context.SaveChanges(); Mark the object for inserting Execute SQL statement

Cascading Inserts We can also add cascading entities to the database: The Project will be added when the Employee entity (employee) is inserted to the database Employee employee = new Employee(); employee.FirstName = "Petya"; employee.LastName = "Grozdarska"; employee.Projects.Add(new Project { Name = "SoftUni Conf"} ); softUniEntities.Employees.Add(employee); softUniEntities.SaveChanges();

Updating Existing Data 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 Employees employee = softUniEntities.Employees.First(); employees.FirstName = "Alex"; context.SaveChanges(); This will execute an SQL SELECT to load the first order This will execute an SQL UPDATE

Deleting Existing Data Delete is done by Remove() on the specified entity collection SaveChanges() method performs the delete action in the database Mark the entity for deleting at the next save Employees employee = softUniEntities.Employees.First(); softUniEntities.Employees.Remove(employee); softUniEntities.SaveChanges(); This will execute the SQL DELETE command

Summary ORM frameworks map database schema to objects in a programming language Entity Framework is the standard .NET ORM LINQ can be used to query the DB var employees = context.Employees .Where(c => c.JobTitle == "Design Engineering") .Select(c => c.FirstName) .ToList(); © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Introduction to Entity Framework https://softuni.bg/courses/ © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

License 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 © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 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 Forums forum.softuni.bg © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.