我是新的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");
}
我在网上的所有研究都指向了缺失的参考文献,但我似乎找不到我缺失的是哪一本(见图)。
我用的是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
按照下面的步骤进行。
为实体框架核心安装实体框架核心设计和SQL Server数据库提供程序:
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
导入实体框架核心:
using Microsoft.EntityFrameworkCore;
然后配置DbContext:
var connectionString = Configuration.GetConnectionString("myDb");
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(connectionString)
);
正如Win的高分答案所提到的,你可能需要安装Microsoft.EntityFrameworkCore.SqlServer NuGet包,但请注意,这个问题使用的是asp.net core mvc。在最新的ASP。在NET Core 2.1中,微软包含了一个叫做微软. aspnetcore . app的元包
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2
如果右键单击ASP. xml,就可以看到对它的引用。在解决方案资源管理器中选择“编辑项目文件”
如果ASP。NET core webapps using语句
<包引用包括=“Microsoft.AspNetCore.App” />
Microsoft.EntityFrameworkCore.SqlServer包含在这个元包中。所以在你的Startup.cs中,你只需要添加:
使用Microsoft.EntityFrameworkCore;
你的解决方案很有效。
当我看到这个视频直到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中的良好社区