DB Core上的EF Core没有.Include()方法

时间:2017-02-09 11:12:39

标签: asp.net-core .net-core entity-framework-core

我目前完全无法调用.Include()和intellisense(在vscode中)似乎认为它不存在。

现在经过很长一段时间搜索网络后,我发现了这个:

Not finding .Include() method in my EF implementing Generic repository

似乎表明.Include仅存在于System.Data.Entities中,仅适用于EF 5和6。

那么我如何为EF核心中的实体加载我的list属性?

继承我的背景

public class Database : DbContext
{
    //Set new datasources like this: public DbSet<class> name { get; set; }

    public DbSet<Domain.Resource> Resources { get; set; }
    public DbSet<Domain.ResourceType> ResourceTypes { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite("Filename=./something.db");
    }
}

继承数据类:

public class Resource
{
    public int ResourceId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    public int ResourceTypeId { get; set; }
    public ResourceType ResourceType { get; set; }
}
public class ResourceType
{
    public int ResourceTypeId { get; set; }
    public string Name { get; set; }

    public List<Resource> Resources { get; set; }
}

然后我做了类似的事情:

public List<ResourceType> GetAll()
{
    var router = new Database();

    var result = router.ResourceTypes.Include(rt => rt.Resources); //It's here there's absolutely no .Include method

    return result.ToList();
}

EF Core中不存在.Include吗?

3 个答案:

答案 0 :(得分:28)

这是我正在调用该方法的文件中缺少引用的直接结果(虽然我不太清楚我是怎么理解的......)

无论如何,添加:

using Microsoft.EntityFrameworkCore;
TsengSmit建议的那样,做了诀窍。 (在我定义函数的文件中)

虽然为什么会有效但我不知道。我以为.include会自动通过DbSet提供。

谢谢! :)

答案 1 :(得分:4)

如果你最终在这里,EF 6或以下的用户碰巧错过OP实际提到的这个,就像我做的那样,你想添加

using System.Data.Entity;

到你的班级。

答案 2 :(得分:1)

Here是之前在EF7中跟踪此问题的答案。它现在已经包含在内了。