web-dev-qa-db-fra.com

Méthode EF Core no .Include () sur DBset

Je suis actuellement complètement incapable d'appeler .Include () et intellisense (dans vscode) ne semble pas penser qu'il existe.

Maintenant, après une longue recherche sur le Web, j'ai trouvé ceci:

Impossible de trouver la méthode .Include () dans mon EF implémentant le référentiel générique

ce qui semble suggérer que .Include n'existe que dans System.Data.Entities, qui n'est disponible que pour EF 5 et 6.

Alors, comment puis-je ardemment charger ma propriété de liste pour une entité dans le noyau EF?

voici mon contexte

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");
    }
}

Voici les classes de données:

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; }
}

Ensuite, je fais quelque chose comme:

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();
}

Est-ce que .Include n'existe pas dans EF Core?

16
user3801839

C'est une conséquence directe d'une référence manquante dans le fichier où je fais un appel à la méthode (même si je ne suis pas sûr de comprendre comment ...)

Quoi qu'il en soit, en ajoutant:

using Microsoft.EntityFrameworkCore;

comme Tseng et Smit suggéré, a fait l'affaire. (dans le fichier dans lequel je définis la fonction)

Mais pourquoi cela fonctionne, je n'en ai aucune idée. Je pensais que .include serait automatiquement disponible via le DbSet.

Merci quand même! :)

35
user3801839

Si vous vous retrouvez ici, un utilisateur d'EF 6 ou inférieur et qu'il vous arrive de manquer que OP en fait mention comme moi, vous voulez ajouter

using System.Data.Entity;

à votre classe.

4
Mike Devenney

Ici est une réponse précédente qui suit ce problème dans EF7. Il semble qu'il soit désormais "inclus".

1
trevorc