我是新的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");
        }

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


当前回答

解决这个问题的简单方法

错误信息:

解决方案: 安装“microsoft.entityframeworkcore”。sqlserver"与NuGet

修复:

PS:确保你在“using Microsoft.EntityFrameworkCore;”内容上使用了EF。

其他回答

我用的是Visual Studio Code。

1)尝试安装“Microsoft.EntityFrameworkCore”包。SqlServer',指定版本号。

VS代码:

添加Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1

Visual Studio: -

安装包Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1'

请参考链接“Package”Microsoft.EntityFrameworkCore。SqlServer'与项目中的'所有'框架'不兼容。

2)然后在Startup.cs文件中手动添加命名空间“using Microsoft.EntityFrameworkCore;”

参考下面的链接 https://github.com/aspnet/EntityFramework/issues/7891。

3)如果你对'Microsoft.EntityFrameworkCore.SqlServer. net有任何依赖问题。“设计”,比如“包”Microsoft.EntityFrameworkCore。“设计”与“项目中的“所有”框架不兼容”,我们需要运行以下命令,

VS代码:

. net添加包Microsoft.EntityFrameworkCore.Design -v 1.1

Visual Studio

安装包Microsoft.EntityFrameworkCore.Design -v 1.1

当我转移到Microsoft.EntityFrameworkCore.SqlServer v3.0.0和Microsoft.EntityFrameworkCore.Tools v3.0.0时,我遇到了这个问题

当我在两个库上都改回v2.2.6时,错误就消失了。这更像是一种变通方法而不是解决方案,但它会让你启动并运行,直到问题得到解决。

就我而言:- 我已经点击了下面的命令,它已经解决了。 命令

安装- package Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1

你的解决方案很有效。

当我看到这个视频直到17分钟:https://www.youtube.com/watch?v=fom80TujpYQ 我遇到了一个问题:

 services.AddDbContext<PaymentDetailContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DevConnection")));

UseSqlServer不能识别,所以我这样做了 安装- package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.5

& 使用Microsoft.EntityFrameworkCore;

那我的问题就解决了。关于我:基本上我从一开始就是一个纯粹的PHP程序员,今天只有我开始了。net编码,感谢在。net中的良好社区

我简单地解决了这个问题:

向相关类添加SqlServerDbContextOptionsExtensions 解决SqlServerDbContextOptionsExtensions

这修复了问题,必须在默认情况下缺少一些引用。