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

为什么一些导航属性会通过投影丢失?

如何解决为什么一些导航属性会通过投影丢失?

我想检索一些数据并以适合我的用例的新形式使用它。由于数据量以及数据模型的急切加载是首选和更快的方式。通过这个,我偶然发现了一些我无法解释的东西。

下面是一个简化的例子:

实体

pip3 freeze
public class Car 
{
   public int Id { get; set; }

   public bool Deleted { get; set; }

   public string Name { get; set; }

   public virtual Engine Engine { get; set; }
   
   public virtual List<Tire> Tires { get; set; }
}
public class Engine
{
   public int Id { get; set; }   

   public string Name { get; set; }

   public int PS { get; set; }
}

代码

public class Tire
{
   public int Id { get; set; }

   public string Name { get; set; }

   public int Profile { get; set; }
}

当我稍后尝试访问引擎时,它不包含在内,需要从昂贵的数据库重新加载。尽管如此,仍然存在轮胎系列。

如果我执行以下操作,引擎将在稍后包含。

代码


var cars = DbContext.Current.Cars
                        .Include(c => c.Engine)
                        .Include(c => c.Tires)
                        .Where(c => !c.Deleted)
                        .Select(c => new {
                                      Car = c,TireIds = c.Tires.Select(t => t.Id)})
                        .ToList();

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