【问题标题】:dotnet core no overload method for UseInMemoryDatabase() takes 0 argumentdotnet core 无重载方法 UseInMemoryDatabase() 采用 0 参数
【发布时间】:2017-05-16 01:19:49
【问题描述】:

我正在https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-vsc尝试dotnet core教程

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

所以我得到了这个“UseInMemoryDatabase() 的无重载方法需要 0 个参数” 我搜索了 UseInMemoryDatabase() 方法签名,但找不到。

我应该向 UseInMemoryDatabase() 提供什么参数?

更新:

一旦我将 Microsoft.EntityFrameworkCore.InMemory 从 2.0.0-preview1-final 降级到 1.1.1 并运行 dotnet restore,错误就消失了。

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

我怀疑错误是由于 Microsoft.EntityFrameworkCore.InMemory 没有“2.0.0-preview1-final”?如果这是真的,那么错误不是因为参数的数量,而是因为没有安装 InMemory db,因此在项目的任何地方都没有定义 UseInMemoryDatabase()。

【问题讨论】:

  • 如果使用 ide 的“转到定义”功能会怎样?
  • vscode 说“未找到定义”
  • 感谢您的网址。我更新了我的帖子。所以我怀疑错误是由于 Microsoft.EntityFrameworkCore.InMemory 没有“2.0.0-preview1-final”?

标签: c# asp.net-web-api asp.net-core asp.net-core-mvc


【解决方案1】:

您需要提供数据库名称。

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

【讨论】:

    【解决方案2】:

    安装包 Microsoft.EntityFrameworkCore.InMemory

    这解决了我的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多