我是新的EF核心,我试图让它与我的ASP工作。NET Core项目。

当我尝试配置DbContext使用config中的连接字符串时,我在startup.cs中得到了上述错误。我正在遵循这个教程。

有问题的代码在startup.cs中:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using tracV2.models;
using tracV2.data;

namespace tracV2
{
    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            services.AddSingleton<IConfiguration>(Configuration);

            string conn = Configuration.GetConnectionString("optimumDB");

            services.AddDbContext<tracContext>(options => options.usesqlserver(conn));
        }

如果我把UseSqlServer方法直接放到上下文中,它就会被识别出来:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace tracV2.data
{
    public class tracContext : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("myrealconnectionstring");
        }

我在网上的所有研究都指向了缺失的参考文献,但我似乎找不到我缺失的是哪一本(见图)。


当前回答

我只好打了电话

 services.AddEntityFrameworkSqlite().AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));

在Startup.cs中的ConfigureServices方法中

其他回答

哇,这么多答案都没有提到这个Microsoft.EntityFrameworkCore.InMemory包!

将引用添加到这个包中: < PackageReference包括= " Microsoft.EntityFrameworkCore。InMemory" Version="2.2.2" />,你应该很好。

我只好打了电话

 services.AddEntityFrameworkSqlite().AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));

在Startup.cs中的ConfigureServices方法中

项目工作在DotNET核心3.1+或更高(未来)

添加这个包:

NuGet: Microsoft.EntityFrameworkCore.Tools 项目配置(.csproj): <PackageReference Include="Microsoft.EntityFrameworkCore. "工具3.1.8中“Version = >

我在包管理器控制台中安装了这三个程序,它可以工作。

安装包microsoft . visualstudio . web . codegenerator . design -Version 3.1.4安装包Microsoft.EntityFrameworkCore.Tools -Version 3.1.8安装包Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.8

对于asp.net核心版本2.1,请确保添加以下包来解决这个问题。(至少这修复了使用SQLite的问题)

dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design

下面是使用带有实体框架核心的SQLite的文档参考。 https://learn.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite