相关疑难解决方法(0)

我可以在不加载整个集合的情况下删除单个子实体吗?

我有2个课程,如下所示.

他们可以拥有非常大的馆藏 - 一个网站可能有2,000多个网站页面,反之亦然.

  class WebsitePage 
  {
    public int ID {get;set;}
    public string Title {get;set;}
    public List<Website> Websites {get;set;}
  }

  class Website 
  {
    public int ID {get;set;}
    public string Title {get;set;}
    public List<WebsitePage> WebsitePages {get;set;}
  }
Run Code Online (Sandbox Code Playgroud)

我在从网站上删除WebsitePage时遇到问题.特别是从mutliple网站删除WebsitePage时.

例如,我可能有这样的代码:

var pageToRemove = db.WebsitePages.FirstOrDefault();
var websites = db.Websites.Include(i => i.WebsitePages).ToList();
foreach(var website in websites)
{
    website.WebsitePages.Remove(pageToRemove)
}
Run Code Online (Sandbox Code Playgroud)

如果每个网站Include()2k页,你可以想象加载第二行需要很长时间.

但是如果我Include()在获取网站时没有使用WebsitePages,则没有加载子集合供我删除.

我试图只Include()删除我需要删除的页面,但当然保存时会给我一个空集合.

有没有推荐或更好的方法来解决这个问题?

我正在使用现有的MVC站点,除非绝对必要,否则我不想为连接表创建实体类.

collections asp.net-mvc linq-to-entities

3
推荐指数
1
解决办法
296
查看次数