Entity Framework (EF) ORM and Entity Framework Code First. CRUD Operations SoftUni Team Technical Trainers Software University

Slides:



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

Software Quality Assurance QA Engineering, Testing, Bug Tracking, Test Automation Software University Technical Trainers SoftUni Team.
C# Advanced Topics Methods, Classes and Objects SoftUni Team Technical Trainers Software University
AngularJS Routing Routes, Route Parameters, Templates, Location, Navigation SoftUni Team Technical Trainers Software University
Using MongoDB with.NET Welcome to the JSON-stores world SoftUni Team Technical Trainers Software University
AngularJS Services Built-in and Custom Services SoftUni Team Technical Trainers Software University
Methods Writing and using methods, overloads, ref, out SoftUni Team Technical Trainers Software University
Software University Curriculum, Courses, Exams, Jobs SoftUni Team Technical Trainers Software University
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC SoftUni Team Technical Trainers Software University
AngularJS Directives Defining Custom Directives SoftUni Team Technical Trainers Software University
Software Testing Lifecycle Exit Criteria Evaluation, Continuous Integration Ivan Yonkov Technical Trainer Software University.
NoSQL Databases NoSQL Concepts SoftUni Team Technical Trainers Software University
Consuming REST Services from C# SoftUni Team Technical Trainers Software University
Loops Repeating Code Multiple Times SoftUni Team Technical Trainers Software University
Database APIs and Wrappers
Entity Framework Performance SoftUni Team Technical Trainers Software University
Methods, Arrays, Lists, Dictionaries, Strings, Classes and Objects
Svetlin Nakov Technical Trainer Software University
Processing Redis with.NET How to Operate with Redis Databases SoftUni Team Technical Trainers Software University
Multidimensional Arrays, Sets, Dictionaries Processing Matrices, Multidimensional Arrays, Dictionaries, Sets SoftUni Team Technical Trainers Software University.
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC Angel Georgiev Part-time Trainer Software University
Test-Driven Development Learn the "Test First" Approach to Coding 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.
Entity Framework: Code First SoftUni Team Technical Trainers Software University
Trainers Team Ivan Yonkov Rated in the top 7% at Stack Overflow
Asynchronous Web Services Writing Asynchronous Web Services SoftUni Team Technical Trainers Software University
Controls, Widgets, Grid…
Jekyll Static Site Generator Template-Based Site Generation Svetlin Nakov Technical Trainer Software University
Forms Overview, Query string, Submitting arrays, PHP & HTML, Input types, Redirecting the user Mario Peshev Technical Trainer Software.
Processing JSON in.NET JSON, JSON.NET LINQ-to-JSON and JSON to XML SoftUni Team Technical Trainers Software University
Advanced C# Course Introduction SoftUni Team Technical Trainers Software University
Mocking with Moq Tools for Easier Unit Testing SoftUni Team Technical Trainers Software University
Mocking Unit Testing Methods with External Dependencies SoftUni Team Technical Trainers Software University
Mocking with Moq Mocking tools for easier unit testing Svetlin Nakov Technical Trainer Software University
ORM Basics Repository Pattern, Models, Entity Manager Ivan Yonkov Technical Trainer Software University
Test-Driven Development Learn the "Test First" Approach to Coding Svetlin Nakov Technical Trainer Software University
Programming for Beginners Course Introduction SoftUni Team Technical Trainers Software University
Objects and Classes Using Objects and Classes Defining Simple Classes SoftUni Team Technical Trainers Software University
Sets, Dictionaries SoftUni Team Technical Trainers Software University
Software Technologies Course Overview SoftUni Team Technical Trainers Software University
Programming Fundamentals Course Introduction SoftUni Team Technical Trainers Software University
Doctrine The PHP ORM SoftUni Team Technical Trainers Software University
Creating Content Defining Topic, Creating Technical Training Materials SoftUni Team Technical Trainers Software University
First Steps in PHP Creating Very Simple PHP Scripts SoftUni Team Technical Trainers Software University
Inheritance Class Hierarchies SoftUni Team Technical Trainers Software University
Static Members Static Variables & Methods SoftUni Team Technical Trainers Software University
SQL Server for Developers Using SQL Server, DB Design, SQL SELECT, INSERT, UPDATE, DELETE SoftUni Team Technical Trainers Software University
Stacks and Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Generics SoftUni Team Technical Trainers Software University
C# OOP Advanced Course Introduction SoftUni Team Technical Trainers Software University
Java OOP Advanced Course Introduction SoftUni Team Technical Trainers Software University
JPA (Java Persistence API) Java ORM, JPA and Hibernate CRUD Operations with JPA SoftUni Team Technical Trainers Software University
Auto Mapping Objects SoftUni Team Database Applications
Introduction to Entity framework
Databases basics Course Introduction SoftUni Team Databases basics
C# Basic Syntax, Visual Studio, Console Input / Output
Introduction to MVC SoftUni Team Introduction to MVC
PHP MVC Frameworks Course Introduction SoftUni Team Technical Trainers
Introduction to Entity Framework
ASP.NET Integration Testing
EF Code First (Advanced)
Entity Framework: Code First
Entity Framework DB From Code, OOP Introduction
Databases advanced Course Introduction SoftUni Team Databases advanced
Entity Framework: Relations
MVC Architecture, Symfony Framework for PHP Web Apps
C#: ASP.NET MVC Overview
Databases Advanced Course Introduction SoftUni Team Databases Advanced
Best practices and architecture
Presentation transcript:

Entity Framework (EF) ORM and Entity Framework Code First. CRUD Operations SoftUni Team Technical Trainers Software University

Table of Contents  ORM Frameworks  Entity Framework  Mapping Existing DB with EF Code First  CRUD Operations  Querying Data  Inserting, Updating, Deleting Data 2

3 sli.do #7649 Have a Question?

4  ORM Frameworks map OOP classes to database tables ORM Frameworks – Overview

5 Mapping DB Tables to Classes ORMFramework Relational DB Schema C# Entity Classes

6  C# / Java / PHP classes are mapped to DB tables  DB relationships are mapped to class associations  ORM provides API for CRUD operations  List objects / query database  Create new object  Update existing object  Delete existing object  ORM provides schema synchronization (DB migrations) ORM Frameworks – Features CRUD operations execute SQL commands in the DB

7  Entity Framework (EF) is modern ORM Framework for C# /.NET Entity Framework – Overview public class BlogDbContext : DbContext { public BlogDbContext() : base("name=BlogDbContext") { } public BlogDbContext() : base("name=BlogDbContext") { } public virtual DbSet Users { get; set; } public virtual DbSet Users { get; set; } public virtual DbSet Posts { get; set; } public virtual DbSet Posts { get; set; }} class User { ID, Username, PasswordHash, FullName, Posts } class Post { ID, Title, Body, Date, UserID, User } var db = new BlogDbContext(); foreach (var p in db.Posts) Console.WriteLine(p.Title); Console.WriteLine(p.Title);

8  Add new Entity Data Model Mapping Existing Database with EF

9  Generate "Code First" from model database  Define the DB connection EF Code First Data Model from Database

10 Defining the DB Connection

11 Finish EF Code First Model Generation

12 Look inside the Generated Code public class BlogDbContext : DbContext : DbContext{ public BlogDbContext() : base( public BlogDbContext() : base( "name=BlogDbContext") { } "name=BlogDbContext") { } …} BlogDbContext.cs public partial class User { public int ID { get; set; } public int ID { get; set; } public string Username public string Username { get; set; } { get; set; } …} User.cs <add name="BlogDbContext" <add name="BlogDbContext" connectionString="data source=(localdb)\MSSQLLocalDB; … connectionString="data source=(localdb)\MSSQLLocalDB; … App.config public partial class Post { public int ID { get; set; } public int ID { get; set; } …} Post.cs

13  Use the code below to test the generated EF Code First data model ( DbContext + Entity Classes)  List all users from the User entity class Test the Generated DbContext + Entities static void Main() { var db = new BlogDbContext(); var db = new BlogDbContext(); foreach (var user in db.Users) foreach (var user in db.Users) Console.WriteLine(user.Username); Console.WriteLine(user.Username);}

Mapping DB Tables with EF Code First Live Exercise in Class (Lab)

15 CRUD Operations: Query Data var db = new BlogDbContext(); // Use LINQ to query the Posts enities var posts = db.Posts.Select(p => new { p.ID, p.Title, p.ID, p.Title, Comments = p.Comments.Count(), Comments = p.Comments.Count(), Tags = p.Tags.Count() }); Tags = p.Tags.Count() }); Console.WriteLine("SQL query:\n{0}\n", posts); foreach (var p in posts) Console.WriteLine($"{p.ID} {p.Title} ({p.Comments} comments, {p.Tags} tags)"); Console.WriteLine($"{p.ID} {p.Title} ({p.Comments} comments, {p.Tags} tags)");

16 The SQL Query Generated by EF SELECT [Project1].[ID] AS [ID], [Project1].[ID] AS [ID], [Project1].[Title] AS [Title], [Project1].[Title] AS [Title], [Project1].[C1] AS [C1], [Project1].[C1] AS [C1], (SELECT (SELECT COUNT(1) AS [A1] COUNT(1) AS [A1] FROM [dbo].[Posts_Tags] AS [Extent3] FROM [dbo].[Posts_Tags] AS [Extent3] WHERE [Project1].[ID] = [Extent3].[PostID]) AS [C2] WHERE [Project1].[ID] = [Extent3].[PostID]) AS [C2] FROM ( SELECT FROM ( SELECT [Extent1].[ID] AS [ID], [Extent1].[ID] AS [ID], [Extent1].[Title] AS [Title], [Extent1].[Title] AS [Title], (SELECT (SELECT COUNT(1) AS [A1] COUNT(1) AS [A1] FROM [dbo].[Comments] AS [Extent2] FROM [dbo].[Comments] AS [Extent2] WHERE [Extent1].[ID] = [Extent2].[PostID]) AS [C1] WHERE [Extent1].[ID] = [Extent2].[PostID]) AS [C1] FROM [dbo].[Posts] AS [Extent1] FROM [dbo].[Posts] AS [Extent1] ) AS [Project1] ) AS [Project1]

17 CRUD Operations: Create New Data var db = new BlogDbContext(); var post = new Post() { Title = "New Title", Title = "New Title", Body = "New Post Body", Body = "New Post Body", Date = DateTime.Now Date = DateTime.Now}; db.Posts.Add(post); db.SaveChanges(); Console.WriteLine("Post #{0} created.", post.ID);

18 CRUD Operations: Cascading Insert var db = new BlogDbContext(); var post = new Post() { Title = "New Post Title", Date = DateTime.Now, Title = "New Post Title", Date = DateTime.Now, Body = "This post have comments and tags", Body = "This post have comments and tags", User = db.Users.First(), User = db.Users.First(), Comments = new Comment[] { Comments = new Comment[] { new Comment() { Text = "Comment 1", Date = DateTime.Now }, new Comment() { Text = "Comment 1", Date = DateTime.Now }, new Comment() { Text = "Comment 2", Date = DateTime.Now, new Comment() { Text = "Comment 2", Date = DateTime.Now, User = db.Users.First() } }, User = db.Users.First() } }, Tags = db.Tags.Take(3).ToList() Tags = db.Tags.Take(3).ToList()}; db.Posts.Add(post); db.SaveChanges();

19 CRUD Operations: Update Existing Data var db = new BlogDbContext(); var user = db.Users.Where(u => u.Username == "maria").Where(u => u.Username == "maria").First();.First(); user.PasswordHash = Guid.NewGuid().ToByteArray(); Guid.NewGuid().ToByteArray(); db.SaveChanges(); Console.WriteLine( "User #{0} ({1}) has a new random password.", "User #{0} ({1}) has a new random password.", user.ID, user.Username); user.ID, user.Username);

20 CRUD Operations: Delete Existing Data var db = new BlogDbContext(); var lastPost = db.Posts.OrderByDescending(p => p.ID).OrderByDescending(p => p.ID).First();.First(); db.Comments.RemoveRange( lastPost.Comments); lastPost.Comments); lastPost.Tags.Clear(); db.Posts.Remove(lastPost); db.SaveChanges(); Console.WriteLine( $"Deleted post #{lastPost.ID}"); $"Deleted post #{lastPost.ID}");

21 Execute Native SQL var db = new BlogDbContext(); var startDate = new DateTime(2016, 05, 19); var endDate = new DateTime(2016, 06, 14); var posts = db.Database.SqlQuery ID, Title, Date FROM ID, Title, Date FROM Posts WHERE CONVERT(date, Date) WHERE CONVERT(date, Date) BETWEEN {0} AND {1} BETWEEN {0} AND {1} ORDER BY Date", ORDER BY Date", startDate, endDate); startDate, endDate); foreach (var p in posts) Console.WriteLine( Console.WriteLine( $"#{p.ID}: {p.Title} ({p.Date})"); $"#{p.ID}: {p.Title} ({p.Date})"); class PostData { public int ID { get; set; } public int ID { get; set; } public string Title { get; set; } public string Title { get; set; } public DateTime Date { get; set; } public DateTime Date { get; set; }}

CRUD Operations with EF Live Exercise in Class (Lab)

23  ORM Frameworks maps DB tables to classes  Provide API for queries and CRUD operations  Entity Framework is ORM framework for C#  DbContext provides CRUD + LINQ queries Summary var db = new SomeDbContext(); var entity = db.Entities.First(); db.Entities.Add(new Entity(){ … }); db.Entities.Remove(entity); db.SaveChanges();

? ? ? ? ? ? ? ? ? Entity Framework

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

Free Software University  Software University Foundation – softuni.orgsoftuni.org  Software University – High-Quality Education, Profession and Job for Software Developers  softuni.bg softuni.bg  Software Facebook  facebook.com/SoftwareUniversity facebook.com/SoftwareUniversity  Software YouTube  youtube.com/SoftwareUniversity youtube.com/SoftwareUniversity  Software University Forums – forum.softuni.bgforum.softuni.bg