Pau*_*cis 2 c# model-view-controller asp.net-mvc entity-framework cascade
我拥有的数据库的设置Company可以有很多Engineer,也可以有很多Territory.如果我应该从列表中删除公司,我需要做一个干净的退出,所以不要只删除公司表格中的公司表格.我必须确保所有记录都被删除.因此,没有子/相关记录成为孤儿数据.
如果我要从所有表中删除一条记录,我只想删除它FirstOrDefault,然后我可以使用
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();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,每个公司有多个工程师,每个公司有一个以上的领土.是否有一个简单的方法,如一般的数据库意义.
DELETE * FROM Engineers WHERE companyId = 1;
Run Code Online (Sandbox Code Playgroud)
此刻我没有Cascading删除设置,所以除此之外.任何其他选择.
为什么不使用.Where()方法在DB中查找所有相应的项目?像这样:
foreach(var ec in db.Engineers.Where(x => x.CompanyId == companyId))
{
db.Engineers.Remove(ec);
}
// same logic here for other tables
Run Code Online (Sandbox Code Playgroud)
还要考虑@workabyte的答案,因为有一种方法可以cascade delete在您的数据库中实现.
| 归档时间: |
|
| 查看次数: |
2105 次 |
| 最近记录: |