The setup for the database I have is, Company
can have many Engineer
, and can be in many Territory
. If I am supposed to remove a company form the list, I need to make a clean exit, so instead of deleting just the Company form the company table. I have to make sure all records are deleted everywhere. So no child/related records become orphan data.
If I am to remove just one record from all the tables, I would simply delete it using FirstOrDefault
, then I could use
public void RemoveCompany(long companyId)
{
using (var db = new BoilerServicingDbContext())
{
var ec = db.Engineers.FirstOrDefault(x => x.CompanyId == companyId);
db.Engineers.Remove(ec);
var tc = db.CompanyTerritories.FirstOrDefault(x => x.CompanyId == companyId);
db.CompanyTerritories.Remove(tc);
var p = db.Companies.FirstOrDefault(x => x.Id == companyId);
db.Companies.Remove(p);
db.SaveChanges();
}
}
However, there are more than one Engineer per company and more than one Territory per company. Is there a simple method, as in general database sense.
DELETE * FROM Engineers WHERE companyId = 1;
At this moment I do not have Cascading delete setup, so other than that. Any other options.