Presentation is loading. Please wait.

Presentation is loading. Please wait.

ORM Technologies and Entity Framework (EF)

Similar presentations


Presentation on theme: "ORM Technologies and Entity Framework (EF)"— Presentation transcript:

1 ORM Technologies and Entity Framework (EF)
Entity Framework, DbContext, CRUD Operations, Code First, Migrations Svetlin Nakov Inspiration Manager Software University © Software University Foundation – This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

2 Table of Contents ORM Technologies – Basic Concepts
Entity Framework – Overview Database First with EF Reading Data and CRUD operations with EF Code First with EF Domain Classes and DbContext Migrations in EF © Software University Foundation – This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

3 Introduction to ORM Technologies
What is Object-Relational Mapping (ORM)?

4 ORM Technologies Object-Relational Mapping (ORM) is a programming technique for automatic mapping data and database schema Map relational DB tables to classes and objects ORM creates a "virtual object database" Used from the programming language (C#, Java, PHP, …) ORM frameworks automate the ORM process A.k.a. Object-Relational Persistence Frameworks

5 Relational database schema
ORM Mapping – Example ORM Entities (C# classes) Relational database schema ORM Framework

6 Object-Relation Persistence Framework for .NET
Entity Framework (EF) Object-Relation Persistence Framework for .NET

7 Overview of EF Entity Framework (EF) is the standard ORM framework for .NET Maps relational database to C# object model Powerful data manipulation API over the mapped schema CRUD operations and complex querying with LINQ Database first approach: from database to C# classes Code first approach: from classes to DB schema Visual Studio generates EF data models Data mappings consist of C# classes, attributes and XML

8 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

9 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

10 Database First with Entity Framework and Visual Studio
Live Demo

11 Entity Framework – Components
The DbContext class DbContext holds the DB connection Holds and DbSet<T> for the entity classes Provides LINQ-based data access ( through IQueryable) Provides 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 – This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

12 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 .Select(c => c.FirstName) .Where(c => c.JobTitle == "Design Engineering") .ToList(); } This is called projection ToList() method executes the SQL query This is called selection using (var context = new SoftUniEntities()) { var project = context.Projects.Find(2); Console.WriteLine(project.Name); }

13 Creating New Data 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 var project = new Project() { Name = "Judge System", StartDate = new DateTime(2015, 4, 15) }; context.Projects.Add(order); context.SaveChanges(); Create a new project object Mark the object for inserting This will execute an SQL INSERT

14 Cascading Inserts 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 Employee employee = new Employee(); employee.FirstName = "Petya"; employee.LastName = "Grozdarska"; employee.Projects.Add(new Project { Name = "SoftUni Conf" } ); softUniEntities.Employees.Add(employee); softUniEntities.SaveChanges();

15 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

16 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

17 Parameter placeholder
Native SQL Queries var context = new SoftUniEntities(); string nativeSQLQuery = "SELECT FirstName + ' ' + LastName " + "FROM dbo.Employees WHERE JobTitle = {0}"; var employees = context.Database.SqlQuery<string>( nativeSQLQuery, "Marketing Specialist"); foreach (var emp in employees) { Console.WriteLine(emp); } Parameter placeholder Return type Parameter value

18 CRUD Operations with EF
Live Demo

19 "Code First" Approach in EF
From Classes to DB Schema

20 Database First in EF Create database schema and generate C# code (models) from it Domain Classes DB EDMX Model

21 DbContext & ModelBuilder
Code First in EF Domain classes DbContext & ModelBuilder DB Custom Configuration As needed © Software University Foundation – This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

22 Domain Classes (Models)
Bunch of normal C# classes (POCO) May hold navigation properties public class PostAnswer { public int Id { get; set; } public string Content { get; set; } public int PostId { get; set; } public virtual Post Post { get; set; } } Primary key Foreign key Navigation property Virtual for lazy loading

23 Domain Classes (Models) (2)
Another example of domain class (model) public class Post { public Post() this.Answers = new HashSet<PostAnswer>(); } public virtual ICollection<PostAnswer> Answers { get; set; } public PostType Type { get; set; } This prevents NullReferenceException Navigation property Enumeration

24 Defining the DbContext Class
using System.Data.Entity; using CodeFirst.Models; public class ForumContext : DbContext { public DbSet<Category> Categories { get; set; } public DbSet<Post> Posts { get; set; } public DbSet<PostAnswer> PostAnswers { get; set; } public DbSet<Tag> Tags { get; set; } } Put all entity classes as DbSets

25 CRUD Operations with EF Code First
var db = new ForumContext(); var category = new Category { Name = "Database course" }; db.Categories.Add(category); var post = new Post(); post.Title = "Homework Deadline"; post.Content = "Please extend the homework deadline"; post.Type = PostType.Normal; post.Category = category; post.Tags.Add(new Tag { Text = "homework" }); post.Tags.Add(new Tag { Text = "deadline" }); db.Posts.Add(post); db.SaveChanges(); © Software University Foundation – This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

26 "Code First" Approach in EF
Live Demo

27 Using Code First Migrations in EF

28 Code First Migrations in Entity Framework
Enable Code First Migrations Open Package Manager Console Run Enable-Migrations command -EnableAutomaticMigrations for auto migrations

29 Using Code First Migrations in EF
Live Demo

30 ORM Technologies and Entity Framework (EF)
© Software University Foundation – This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

31 Free Trainings @ Software University
Software University Foundation – softuni.org Software University – High-Quality Education, Profession and Job for Software Developers softuni.bg Software Facebook facebook.com/SoftwareUniversity Software YouTube youtube.com/SoftwareUniversity Software University Forums – forum.softuni.bg © Software University Foundation – This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.


Download ppt "ORM Technologies and Entity Framework (EF)"

Similar presentations


Ads by Google