web-dev-qa-db-fra.com

Comment passer à l'unité EF Core 3 vue sans clé en mémoire?

Je joue avec EF Core 3 et j'écris des tests unitaires et ne semble pas pouvoir configurer des données de test pour une vue.

Quand j'essaie de sauver, j'obtiens l'erreur:

Impossible de suivre une instance de type car il n'a pas de clé primaire. Seules les types d'entité avec les clés primaires peuvent être suivies

public class EFContext : DbContext
{
    public DbSet<ViewItem> ViewItems { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<ViewItem>().HasNoKey().ToView("vTestView");
    }
}

using (EFContext efContext = new EFContext())
{
    efContext.ViewItems.Add(new ViewItem
    {
        Name = "This is test item #1"
    });

    efContext.SaveChanges();
}
8
user3953989

Je recommande d'utiliser cette impressionnante bibliothèque moqueuse: https://github.com/rgvlee/entityframeworkcore.tsting

ensuite, vous pouvez facilement faire:

    var mockedDbContext = Create.MockedDbContextFor<TestDbContext>();

    mockedDbContext.Query<TestQuery>().AddRangeToReadOnlySource(expectedResult);
0
peter