如何在不加载EF数据库的情况下清除多对多的关系?

时间:2013-05-24 14:43:26

标签: entity-framework

我有以下实体(使用Entity Framework 5的pocos):

  • 公司:ID,名称,应用程序等
  • 申请:ID,姓名等

公司和应用程序之间存在多对多的关系。

有一家公司(没有从数据库加载的应用程序关系)和一组应用程序ID,我想清除公司的应用程序,并添加带有集合中指定的ID的应用程序。

我可以使用他们的id附加应用程序,而无需从数据库加载它们,如下所示:

foreach (int id in selectedApplications)
{
    Application application = new Application() { Id = id };
    _context.Applications.Attach(application);
    company.Applications.Add(application);
}
_context.SaveChanges();

但我需要先清除应用程序关系。有没有办法清除多对多关系而不先从数据库加载它?

1 个答案:

答案 0 :(得分:1)

这是唯一的方法。当您添加或删除项目时,必须加载company.Applications,否则更改跟踪器将永远不会知道任何更改。

此外,联结表不是概念模型中的实体,因此无法在foreign key associations中设置原始外键属性。您必须通过对象集合访问关联。