微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实体框架导航属性如何绑定

如何解决实体框架导航属性如何绑定

我们正在使用EF Core处理关系并访问我们的数据。实际上,我们有一个具有以下几个级别的数据结构:

Public Class Case 
{
     public GUID ID;
     public GUID ParentID;
     public virtual ICollection<Case> LinkedCases;
     public virtual ICollection<Event> Events { get; set; }
}

Public Class Event
{
     some properties
}

And then in my Entity framework AppDbContext,I declared following:

public DbSet<Case> Cases;

public DbSet<Event> Events;


我们必须启动几次搜索才能加载所有数据。我目前正在进行不同加载方式的性能测试:

渴望加载

  1. 在1/2级搜索中表现良好。
  2. 但是在3级之后的搜索过程中,由于多次使用相同模式的“左联接”,我们将出现笛卡尔爆炸。
  3. 优点是查询次数最少,因此应用程序服务器与数据库服务器之间的通信时间也最少。

显式加载 我已经对其工作方式进行了一些更新,因此基本上我们将加载第一级,然后从第一级加载第二级,然后从第二级加载第三级。

  1. 优点是我明确避免了笛卡尔爆炸,我的数据库查询持续时间稳定。
  2. 但是糟糕的是,我有更多的查询,这意味着更多的通信,这对性能产生了重大影响。

因此,我正在考虑一种方法,可以减少查询数量并避免架构之间的过多连接。

动态方式

  1. 这样,我首先将通过dbContext.Cases中提供的ID搜索根大小写。

  2. 然后我将搜索所有大小写。ParentId= ID并获取其ID。

  3. 然后我将继续搜索以查找所有大小写。ParentId存在于ID中并将它们加载到dbContext.Cases中。

  4. 这样,我成功地减少了查询数量并避免了太多的联接问题。

  5. 由于数据被加载到DbSet中而不是导航属性中,因此我认为我应该在案例及其LinkedCases之间创建绑定。但是我发现它们已经被束缚了。

问题 我认为应该有一些函数可以处理此问题,但是当导航属性独立加载时如何自动绑定导航属性我有点困惑,我尝试在Entity Framework论坛(官方网站)中进行搜索,但没有找到太多有用的信息。

可以帮忙吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。