相关疑难解决方法(0)

延迟加载与预先加载

实体框架中的延迟加载是加载和访问相关实体时发生的默认现象.然而,急切加载是指强制加载所有这些关系的做法.我遇到的问题是,在什么情况下,急切加载可能比延迟加载更有益.问这个,因为很明显延迟加载更加资源友好,即使我们使用这个ToList()方法,我们仍然可以利用延迟加载行为.但是,我认为可能延迟加载会增加对实际数据库的请求数量,这也许是开发人员使用该Inlcude方法强制加载所有关系的原因.例如,在MVC 5中使用Visual Studio自动搭建时,在控制器中自动创建的Index方法总是使用Eager Loading,而且我总是有一个问题,即在这种情况下Microsoft默认使用Eager Loading.

如果有人向我解释,在什么情况下,渴望加载比延迟加载更有益,我会很感激,为什么我们一直使用它,同时有更多的资源友好作为延迟加载.

c# entity-framework entity-framework-6

63
推荐指数
6
解决办法
7万
查看次数

ASP.NET Core API仅返回列表的第一个结果

我创建了一个团队web api控制器,并尝试调用GET方法来获取数据库中所有团队的json结果.但是当我打电话时,我只让第一支队伍回到了json,但是当我在return语句上设置一个断点时,它拥有所有254支球队以及所有比赛.

这些是我正在处理的两个模型:

public class Team
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Icon { get; set; }
    public string Mascot { get; set; }
    public string Conference { get; set; }
    public int NationalRank { get; set; }

    public List<Game> Games { get; set; }
}

public class Game
{
    public string Id { get; set; }
    public string Opponent { get; set; }
    public string OpponentLogo { get; …
Run Code Online (Sandbox Code Playgroud)

c# json entity-framework asp.net-web-api asp.net-core

33
推荐指数
1
解决办法
1万
查看次数

实体框架Include()在复杂查询中不起作用

考虑遵循LINQ查询:

var item = (from obj in _db.SampleEntity.Include(s => s.NavProp1)
           select new
           {
                ItemProp1 = obj,
                ItemProp2 = obj.NavProp2.Any(n => n.Active)
           }).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

这按预期运行,但item.ItemProp1.NavProp1NULL.正如它在这里解释的那样,这是因为查询在使用后实际发生了变化Include().但问题是这种情况的解决方案是什么?

编辑:

当我像这样更改查询时,每件事都可以正常工作:

var item = (from obj in _db.SampleEntity.Include(s => s.NavProp1)
           select obj).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

关于这篇文章,我想问题是什么......但作者提供的解决方案不适用于我的情况(因为在最终选择中使用匿名类型而不是实体类型).

c# linq entity-framework

10
推荐指数
1
解决办法
2万
查看次数