- Entity F - Nested Entity Types
- Entity F - Multiple DbContext
- Entity F - Code First Migration
- Entity Framework - Seed Database
- Entity Framework - Fluent API
- Entity Framework - Data Annotations
- Entity Framework - First Example
- Entity F - Code First Approach
- Entity Framework - Colored Entities
- Entity Framework - Track Changes
- Entity Framework - Validation
- Entity Framework - Explicit Loading
- Entity Framework - Lazy Loading
- Entity Framework - Eager Loading
- Entity Framework - Migration
- Entity Framework - Inheritance
- Entity Framework - Spatial Data Type
- Entity F - Command Interception
- Entity F - Command Logging
- Entity F - Projection Queries
- Entity Framework - Persistence
- Entity F - Asynchronous Query
- Entity Framework - Enum Support
- Entity Framework - Native SQL
- Entity F - Table-Valued Function
- Entity F - Disconnected Entities
- Entity F - Stored Procedures
- Entity Framework - Index
- Entity Framework - Views
- Entity Framework - Transaction
- Entity Framework - Concurrency
- Entity F - Database Operations
- Entity Framework - DEV Approaches
- Entity F - Database First Approach
- Entity F - Model First Approach
- Entity F - Code First Approach
- Entity Framework - Lifecycle
- Entity Framework - Relationships
- Entity Framework - Types
- Entity Framework - DbContext
- Entity Framework - Data Model
- Entity Framework - Database Setup
- Entity F - Environment Setup
- Entity Framework - Architecture
- Entity Framework - Overview
- Entity Framework - Home
Entity Framework Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Entity Framework - Database Operations
In the previous chapters, you learned three different ways of defining an entity data model.
Two of them, Database First and Model First, depended on the Entity Framework designer combined with code generation.
The third, Code First, lets you skip a visual designer and just write your own code.
Regardless of which path you choose, you ll end up with domain classes and one or more Entity Framework DbContext classes allows you to retrieve and persist data relevant to those classes.
The DbContext API in your apppcations is used as a bridge between your classes and your database. The DbContext is one of the most important classes in the Entity Framework.
It enables to express and execute queries.
It takes query results from the database and transforms them into instances of our model classes.
It can keep track of changes to entities, including adding and deleting, and then triggers the creation of insert, update and delete statements that are sent to the database on demand.
Following are the domain ad context classes on which we will be performing different operations in this chapter. This is the same example which we have created in the chapater, Database First Approach.
Context Class Implementation
using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Data.Entity.Core.Objects; using System.Linq; namespace DatabaseFirstDemo { pubpc partial class UniContextEntities : DbContext { pubpc UniContextEntities(): base("name = UniContextEntities") {} protected override void OnModelCreating(DbModelBuilder modelBuilder) { throw new UnintentionalCodeFirstException(); } pubpc virtual DbSet<Course> Courses { get; set; } pubpc virtual DbSet<Enrollment> Enrollments { get; set; } pubpc virtual DbSet<Student> Students { get; set; } } }
Domain Classes Implementation
Course class
namespace DatabaseFirstDemo { using System; using System.Collections.Generic; pubpc partial class Course { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] pubpc Course() { this.Enrollments = new HashSet<Enrollment>(); } pubpc int CourseID { get; set; } pubpc string Title { get; set; } pubpc int Credits { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] pubpc virtual ICollection<Enrollment> Enrollments { get; set; } } }
Student class
namespace DatabaseFirstDemo { using System; using System.Collections.Generic; pubpc partial class Student { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] pubpc Student() { this.Enrollments = new HashSet<Enrollment>(); } pubpc int ID { get; set; } pubpc string LastName { get; set; } pubpc string FirstMidName { get; set; } pubpc System.DateTime EnrollmentDate { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] pubpc virtual ICollection<Enrollment> Enrollments { get; set; } } }
Enrollment class
namespace DatabaseFirstDemo { using System; using System.Collections.Generic; pubpc partial class Enrollment { pubpc int EnrollmentID { get; set; } pubpc int CourseID { get; set; } pubpc int StudentID { get; set; } pubpc Nullable<int> Grade { get; set; } pubpc virtual Course Course { get; set; } pubpc virtual Student Student { get; set; } } }
Create Operation
Adding a new object with Entity Framework is as simple as constructing a new instance of your object and registering it using the Add method on DbSet. The following code lets you add a new student to the database.
class Program { static void Main(string[] args) { var newStudent = new Student(); //set student name newStudent.FirstMidName = "Bill"; newStudent.LastName = "Gates"; newStudent.EnrollmentDate = DateTime.Parse("2015-10-21"); newStudent.ID = 100; //create DBContext object using (var dbCtx = new UniContextEntities()) { //Add Student object into Students DBset dbCtx.Students.Add(newStudent); // call SaveChanges method to save student into database dbCtx.SaveChanges(); } } }
Update Operation
Changing existing objects is as simple as updating the value assigned to the property(s) you want changed and calpng SaveChanges. For example, the following code is used to change the last name of Ap from Khan to Aslam.
using (var context = new UniContextEntities()) { var student = (from d in context.Students where d.FirstMidName == "Ap" select d).Single(); student.LastName = "Aslam"; context.SaveChanges(); }
Delete Operation
To delete an entity using Entity Framework, you use the Remove method on DbSet. Remove works for both existing and newly added entities. Calpng Remove on an entity that has been added but not yet saved to the database will cancel the addition of the entity. The entity is removed from the change tracker and is no longer tracked by the DbContext. Calpng Remove on an existing entity that is being change-tracked will register the entity for deletion the next time SaveChanges is called. The following example is of a code where the student is removed from the database whose first name is Ap.
using (var context = new UniContextEntities()) { var bay = (from d in context.Students where d.FirstMidName == "Ap" select d).Single(); context.Students.Remove(bay); context.SaveChanges(); }
Read Operation
Reading the existing data from the database is very simple. Following is the code in which all the data from the Student table are retrieved and then a program will be displayed with the students’ first and last name in alphabetical order.
using (var db = new UniContextEntities()) { var query = from b in db.Students orderby b.FirstMidName select b; Console.WriteLine("All All student in the database:"); foreach (var item in query) { Console.WriteLine(item.FirstMidName +" "+ item.LastName); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(); }Advertisements