Tout d'abord, je ne peux pas utiliser SQL Lite. Deuxièmement, le code ci-dessous me donne:
L'erreur CS1061 'DbContextOptionsBuilder' ne contient pas de définition pour 'UseInMemoryDatabase' et aucune méthode d'extension 'UseInMemoryDatabase' acceptant un premier argument de type 'DbContextOptionsBuilder' a pu être trouvée (vous manque une directive d'utilisation ou une référence d'assembly?)
Le code:
var options = new DbContextOptionsBuilder<ProductContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.Options;
var context = new ProductContext(options);
Le contexte
using Memory.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
namespace Memory.Data
{
public class ProductContext : DbContext
{
public ProductContext(DbContextOptions<ProductContext> options) : base(options)
{
}
public DbSet<Category> Categories { get; set; }
public DbSet<Product> Products { get; set; }
}
}
Mon fichier CSPROJ de projet
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.5" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.6" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.3" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.3" />
</ItemGroup>
Le problème exact est que la méthode n'est tout simplement pas disponible. Je ne semble pas comprendre pourquoi. J'ai besoin de Lumières sur cette question.
Selon la référence EF Core: Testing with InMemory , vous devez ajouter le package Microsoft.EntityFrameworkCore.InMemory pour utiliser la méthode d'extension UseInMemoryDatabase()
avec DbContextOptionsBuilder
:
Install-Package Microsoft.EntityFrameworkCore.InMemory
Ensuite, vous pouvez suivre l'exemple donné dans la section "Écriture de tests" comme ceci:
var options = new DbContextOptionsBuilder<ProductContext>().UseInMemoryDatabase(databaseName: "database_name").Options;
using (var context = new ProductContext(options))
{
// add service here
}
Vous en avez besoin pour utiliser UseInMemoryDatabase
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.0.0" />
</ItemGroup>
Archivez votre NuGet Package Manager => Gérer les packages pour la solution , vérifiez tous ces packages, qu'ils soient obtenus installés dans votre solution ou non, comme ci-dessous:
J'ai résolu les mêmes problèmes après avoir vérifié que tous les packages ci-dessus ont été installés.