我目前完全无法调用.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吗?
答案 0 :(得分:28)
这是我正在调用该方法的文件中缺少引用的直接结果(虽然我不太清楚我是怎么理解的......)
无论如何,添加:
using Microsoft.EntityFrameworkCore;
像Tseng和Smit建议的那样,做了诀窍。 (在我定义函数的文件中)
虽然为什么会有效但我不知道。我以为.include会自动通过DbSet提供。
谢谢! :)
答案 1 :(得分:4)
如果你最终在这里,EF 6或以下的用户碰巧错过OP实际提到的这个,就像我做的那样,你想添加
using System.Data.Entity;
到你的班级。
答案 2 :(得分:1)
Here是之前在EF7中跟踪此问题的答案。它现在已经包含在内了。