gpt4 book ai didi

c# - 需要 lambda 的 DbQuery.Include() 重载去了哪里?

转载 作者:IT王子 更新时间:2023-10-29 03:41:38 30 4
gpt4 key购买 nike

我刚刚为一个使用 EntityFramework 的新项目声明了一些代码优先模型。

public class BlogEntry
{
public long Id { get; set; }
public long AuthorId { get; set; }
public DateTime PublishedStamp { get; set; }
public string Title { get; set; }
public string Text { get; set; }

public virtual User Author { get; set; }
}

public class User
{
public long Id { get; set; }
public string Email { get; set; }
// ...
}

class BlogDb : DbContext
{
public DbSet<BlogEntry> Entries { get; set; }
public DbSet<User> Users { get; set; }
}

现在假设我想检索 10 个最近的博客条目:

var entries = new BlogDb().Entries.OrderByDescending(...).Take(10).ToList();

现在的问题是访问entry.Author 会导致另一个数据库查询。您不希望对每个博客条目进行单独的此类查询。现在,我的理解是 Include 的目的正是这种情况,所以我可以说:

var entries = new BlogDb().Entries.Include(e => e.Author).(...).ToList();

但是,这个方法好像不存在。只有一个Include(string),像这样:

var entries = new BlogDb().Entries.Include("Author").(...).ToList();

但这很烦人,因为它没有在编译时检查,并且会被重命名重构遗漏。当然,带有 lambda 的版本是“正确”的方法。

那个方法去哪儿了?它不再包含在 EntityFramework 中了吗?

(我知道我可以自己写一个扩展方法来实现这个,所以你不必这样做。我只是想知道我是否遗漏了什么。)

最佳答案

using System.Data.Entity;

它在 EF v4.1 及更高版本中,但您需要引用,因为它是一种扩展方法。


编辑 (感谢@EastonJamesHarvey)

如果使用 EF Core,导入应该是:

using Microsoft.EntityFrameworkCore;

关于c# - 需要 lambda 的 DbQuery.Include() 重载去了哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856955/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com