EDUCBA

EDUCBA

MENUMENU
  • Explore
    • Lifetime Membership
    • All in One Bundles
    • Fresh Entries
    • Finance
    • Data Science
    • Programming and Dev
    • Excel
    • Marketing
    • HR
    • PDP
    • VFX and Design
    • Project Management
    • Exam Prep
    • All Courses
  • Blog
  • Enterprise
  • Free Courses
  • Log in
  • Sign up
Home Software Development Software Development Tutorials Software Development Basics Entity Framework Delete by ID

Entity Framework Delete by ID

Updated March 28, 2023

Entity Framework Delete by ID

Introduction to Entity Framework Delete by ID

Entity Framework Delete by ID is used to delete the record based on the ID; we can make use of the Remove or RemoveRange method to spot it as Delete. In the disconnected scenario, we can attach it to the context and mark it as Delete state. By calling the SaveChanges it will post the delete query to the database.

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Overview of Entity Framework Delete by Id

The Entity Framework creates and run the Delete Statement in the database for the entities EntityState is marked as Deleted.  To deleting the entity DbContextRemove() method is used. Let’s see the following example which deletes the Department based on the ID as follows,

var deptObj = new Department()

{

Id = 1005

};

using (var dbContext = new CampusDB())

{

dbContext.Remove(deptObj);

await dbContext.SaveChangesAsync();

}

The Entity Framework spots the 3rd ID’s EntityState as Deleted, once the method Remove() is called for department entity. So the while calling the SaveChangesAsync() method the 3rd record of department is deleted from the database.

1-1

How to Delete by Id with Entity Framework?

To delete the record, if an entity has a relationship with other entities like One-to-Many or One-to-One then delete the associated data, the relationship is configured once the root entity is deleted. To define the Referential Constraint Options by using the Fluent API of Entity Framework Core, there are of 4 types they are,

  • ClientSetNull – there Foreign Key (FK) properties will be set to Null. ClientSetNull is the default value.
  • Cascade – in this the related entities are also deleted.
  • Restrict – this prevents the cascade delete
  • SetNull– the Foreign Key (FK) properties will be set to Null.

In the application open the Database Context File and set the Referential Constrains with OnDelete() method. In the method OnDelete() set the DeleteBehavior to Cascade. Look at the code below as follows,

protected override void OnModelCreating(ModelBuilder modelBuilder)

{

modelBuilder.Entity<EmployeeMaster>(entity =>

{

entity.Property(e => e.EmpDesig)

.IsRequired()

.HasMaxLength(25)

.IsUnicode(false);

entity.Property(e => e.EmpName)

.IsRequired()

.HasMaxLength(100)

.IsUnicode(false);

entity.HasOne(d => d.DepartmentMaster)

.WithMany(p => p.EmployeeMaster)

.HasForeignKey(d => d.DepartmentMasterId)

.OnDelete(DeleteBehavior.Cascade)

.HasConstraintName(“FK_EmployeeMaster_DepartmentMaster”);

});

}

As of now while deleting the record in the DepartmentMaster table the associated records in EmployeeMaster table also deleted automatically. To look at the following code here we deleting the 7th ID of Department, so that the entire employees which are in 7th department also get deleted automatically.

using (var dbcontext = new CampusDB())

{

Department deptObj = dbcontext.Department.Where(a => a.Id == 7).Include(x => x.Employee).FirstOrDefault();

dbcontext.Remove(deptObj);

await dbcontext.SaveChangesAsync();

}

Entity Framework Delete Records

In Entity Framework for deleting the records, we need to analyze how to delete the entity depends on the record which is in Connected Scenario or Disconnected Scenario. For the Connected Scenario we required to make use of the Remove or RemoveRange method to spot the record as Deleted, whereas in Disconnected Scenario we can connect it to the context and place the state as Deleted.  By calling the SaveChanges it will transmit the delete query to the database. Let’s see the two scenarios as follows,

Connected Scenario – in Connected Scenario the deleting process is straight forward, to query the department entity from the database. To make a call to the Remove () method and send the Department object to the delete state. In EF the Change Tracking marks the entity as Deleted. At last the SaveChanges () method removes the Department from the database by using the Delete Query.

Department deptObj;

//deleting in  Connected Scenario

using (CampusContext dbContext = new CampusContext())

{

dbContext.Database.Log = Console.WriteLine;

deptObj = dbContext.Department.Where(d => d.deptObjt_Name == “HR”).First();

dbContext.Department.Remove(deptObj);

dbContext.SaveChanges();

Console.WriteLine(“The Department {0} ({1}) is Deleted “, deptObj.deptObjt_Name, deptObj.Department);

Console.ReadKey();

}

In SQL Query we deleting by using the following statement,

DELETE [dbo].[Departments] WHERE ([Dept_ID]=@0)

Disconnected Scenario – in disconnected scenario initially we are retrieving the Department Entity and we disconnecting (close) the context and then opening the new context to make use of db.Entry method to spot the Deleted State. In case the Model not presents in the context then the Entry method included to the context and spots the state as Deleted.

Department deptObj;

//deleting in Disconnected Scenario

using (CampusContext  dbContext  = new CampusContext ())

{

dbContext .Database.Log = Console.WriteLine;

deptObj = dbContext .Departments.Where(d => d.Name == “Development”).First();

}

using (CampusContext  dbContext  = new CampusContext ())

{

dbContext .Database.Log = Console.WriteLine;

dbContext .Entry(deptObj).State = System.Data.Entity.EntityState.Deleted;

dbContext .SaveChanges();

}

Deleting record without loading from the database

To delete the entity without loading from the database, by using the Primary Key. Let see the following example which shows deleting record without loading the database. Let’s create new department entity and give Department ID as 2. And then attach it to the context and spot the Deleted State. The method SaveChanges Entity Framework will delete the department.

public void DeleteDisconnectedWithoutLoading()

{

Department deptObj;

deptObj = new Department() { DepartmentID = 2 };

using (CampusContext db = new CampusContext())

{

db.Database.Log = Console.WriteLine;

db.Entry(deptObj).State = System.Data.Entity.EntityState.Deleted;

db.SaveChanges();

}

Console.WriteLine(“Here the Department {0} is Deleted “, deptObj.DepartmentID);

Console.ReadKey();

}

Delete the Records in multiples

To delete the multiple record uses the RemoveRange method of DbSet this removes several records at a time. Let’s see the following example which deletes the department id 3 from the database in the connected scenario, the Entity Framework transmits only one delete query at time to the database so that we need to delete 100 records the EF will issue 100 delete statements,

public void DeleteMultipleRecordsConnected()

{

//to delete the multiple records

using (CampusContext dbContext = new CampusContext())

{

dbContext.Database.Log = Console.WriteLine;

List<Department> deps = dbContext.Departments.Take(2).ToList();

dbContext.Departments.RemoveRange(deps);

try

{

dbContext.SaveChanges();

}

catch (Exception e)

{

Console.WriteLine(e.Message);

}

}

Console.ReadKey();

}

Look at the following code for deleting the multiple records in disconnected scenario,

public void DeleteMultipleRecords_Disconnected()

{

List<Department> deptObj = new List<Department>();

deptObj.Add(new Department { dept_ID = 1 });

deptObj.Add(new Department { dept_ID = 2 });

//to delete multiple records in disconnected scenario

using (CampusContext dbContext = new CampusContext())

{

dbContext.Database.Log = Console.WriteLine;

dbContext.Entry(deptObj).State= System.Data.Entity.EntityState.Deleted;

try

{

dbContext.SaveChanges();

}

catch (Exception e)

{

Console.WriteLine(e.Message);

}

}

Console.ReadKey();

}

Conclusion

In this article we have learned about how to deleting the record based on ID in Entity Framework, EF deleting by ID is applied through the Remove or RemoveRange method to spot as Delete. Hope the article helps you to understand with programmatically.

Recommended Articles

This has been a guide to Entity Framework Delete by ID. Here we discussed the Introduction, How to Delete by Id with Entity Framework? examples with code implementation. You can also go through our other suggested articles to learn more –

  1. Entity Framework NuGet
  2. Entity Framework Core Database-First
  3. Entity Framework Migration
  4. Entity Framework Core
ADVERTISEMENT
All in One Excel VBA Bundle
500+ Hours of HD Videos
15 Learning Paths
120+ Courses
Verifiable Certificate of Completion
Lifetime Access
ADVERTISEMENT
Financial Analyst Masters Training Program
2000+ Hours of HD Videos
43 Learning Paths
550+ Courses
Verifiable Certificate of Completion
Lifetime Access
ADVERTISEMENT
All in One Data Science Bundle
2000+ Hour of HD Videos
80 Learning Paths
400+ Courses
Verifiable Certificate of Completion
Lifetime Access
ADVERTISEMENT
All in One Software Development Bundle
5000+ Hours of HD Videos
149 Learning Paths
1050+ Courses
Verifiable Certificate of Completion
Lifetime Access
Primary Sidebar
Footer
Follow us!
  • EDUCBA FacebookEDUCBA TwitterEDUCBA LinkedINEDUCBA Instagram
  • EDUCBA YoutubeEDUCBA CourseraEDUCBA Udemy
APPS
EDUCBA Android AppEDUCBA iOS App
Blog
  • Blog
  • Free Tutorials
  • About us
  • Contact us
  • Log in
  • Blog as Guest
Courses
  • Enterprise Solutions
  • Free Courses
  • Explore Programs
  • All Courses
  • All in One Bundles
  • Sign up
Email
  • [email protected]

ISO 10004:2018 & ISO 9001:2015 Certified

© 2023 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you

Let’s Get Started

By signing up, you agree to our Terms of Use and Privacy Policy.

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

By continuing above step, you agree to our Terms of Use and Privacy Policy.
*Please provide your correct email id. Login details for this Free course will be emailed to you

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA Login

Forgot Password?

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

Loading . . .
Quiz
Question:

Answer:

Quiz Result
Total QuestionsCorrect AnswersWrong AnswersPercentage

Explore 1000+ varieties of Mock tests View more

🚀 Cyber Monday Reloaded Price Drop! All in One Universal Bundle (3700+ Courses) @ 🎁 90% OFF - Ends in ENROLL NOW