2017-05-16 6 views
1

Ich versuche, dotnet Kern Tutorial https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-vscDotnet Kern keine Überlastung Methode für UseInMemoryDatabase() nimmt 0 Argument

TodoContext.cs

using Microsoft.EntityFrameworkCore; 
namespace TodoApi.Models 
{ 
    public class TodoContext : DbContext 
    { 
     public TodoContext(DbContextOptions<TodoContext> options) 
      : base(options) 
     { 
     } 
     public DbSet<TodoItem> TodoItems { get; set; } 
    } 
} 

Startup.cs

using ... 
using TodoApi.Models; 
using Microsoft.EntityFrameworkCore; 

namespace TodoApi 
{ 
    public class Startup 
    { 
     public Startup(IConfiguration configuration) 
     { 
      Configuration = configuration; 
     } 

     public IConfiguration Configuration { get; } 
     // This method gets called by the runtime. Use this method to add services to the container. 
     public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddDbContext<TodoContext>(opt => opt.UseInMemoryDatabase()); 
      services.AddMvc(); 
      services.AddScoped<ITodoRepository, TodoRepository>(); 
     } 

     // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
     public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
     { 
      app.UseMvc(); 
     } 
    } 
} 

Also habe ich dies "keine Überladung Methode für UseInMemoryDatabase() dauert 0 Argument" Ich googelte für UseInMemoryDatabase() Methode Signatur, konnte aber keine finden.

Welche Argumente sollte ich an UseInMemoryDatabase() übergeben?

Update:

Sobald ich Microsoft.EntityFrameworkCore.InMemory von 2.0.0-preview1-Finale 1.1.1 und lief dotnet restore der Fehler verschwunden degradieren.

<ItemGroup> 
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview1-final"/> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="1.1.1"/> 
    </ItemGroup> 

Ich vermute, dass der Fehler ist darauf zurückzuführen, gibt es keine "2.0.0-preview1-final" für Microsoft.EntityFrameworkCore.InMemory ist? Wenn dies der Fall ist, liegt der Fehler nicht an der Anzahl der Argumente, sondern daran, dass InMemory db was nicht installiert ist und daher UseInMemoryDatabase() nirgendwo im Projekt definiert wurde.

+0

Was ist, wenn Sie "zur Definition" -Funktion Ihrer IDE verwenden? – zerkms

+0

vscode sagt "Keine Definition gefunden" – Shawn

+1

Ich glaube, dass es hier definiert ist https://github.com/aspnet/EntityFramework/blob/dev/src/EFCore.InMemory/Extensions/InMemoryDbContextOptionsExtensions.cs – zerkms

Antwort

5

Sie müssen den Datenbanknamen angeben.

services.AddDbContext<ApiContext>(options => options.UseInMemoryDatabase("RazorPagesApp")); 
Verwandte Themen