我是EF核心的新手,我正试图让它与我的asp.net核心项目一起工作。
在尝试配合dbcontext以使用config中的连接字符串时,我在startup.cs
中收到了上述错误。我正在学习本教程:https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro
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");
}
方法:
<script type="text/javascript">
function move() {
document.getElementById("headerTop").style.cursor = "wait";
function frame() {
var elem = document.getElementById("myElement");
var width = 0;
var id = setInterval(frame, 1000);
if (width >= 99) {
var number = random(99, 100)
if(number = 99) {
clearInterval(id);
document.getElementById("myElement").className =
document.getElementById("myElement").className.replace
( /(?:^|\s)bg-info(?!\S)/g , 'bg-danger' )
document.getElementById("header").title = "Oops looks like something has gone wrong reload the page to start over";
}else if (number = 100) {
clearInterval(id);
document.getElementById("myElement").className =
document.getElementById("myElement").className.replace
( /(?:^|\s)bg-info(?!\S)/g , 'bg-success' )
document.getElementById("header").title = "download is ready";
}
} else {
width++;
elem.style.width = width + '%';
elem.innerHTML = width * 1 + '%';
}
}
}
</script>
我所有的在线研究都指向缺少参考文献,但我似乎无法找出我缺少的那个(见图)。references
非常感谢任何帮助,
由于
答案 0 :(得分:110)
我们安装了Microsoft.EntityFrameworkCore.SqlServer NuGet包。
Microsoft.EntityFrameworkCore.SqlServer
PM > Install-Package Microsoft.EntityFrameworkCore.SqlServer
然后,
services.AddDbContext<AspDbContext>(options =>
options.UseSqlServer(config.GetConnectionString("optimumDB")));
答案 1 :(得分:49)
答案 2 :(得分:16)
在NuGet软件包下方安装将解决您的问题
Microsoft.EntityFrameworkCore.SqlServer
安装软件包Microsoft.EntityFrameworkCore.SqlServer
答案 3 :(得分:7)
这是项目系统中的已知问题。见dotnet/project-system#1741
答案 4 :(得分:6)
我使用的是Visual Studio Code。
1)尝试安装软件包&#39; Microsoft.EntityFrameworkCore.SqlServer&#39;通过指定版本号。
VS代码 :
&#39; dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1&#39;
Visual Studio: -
&#39;安装包Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1&#39;
请参阅链接&#39; Package 'Microsoft.EntityFrameworkCore.SqlServer' is incompatible with 'all' frameworks in the project&#39;这样做。
2)然后使用Microsoft.EntityFrameworkCore添加命名空间&#39; ; &#39;在Startup.cs文件中手动。
请参阅以下链接 https://github.com/aspnet/EntityFramework/issues/7891
3)如果您对&#39; Microsoft.EntityFrameworkCore.SqlServer.Design&#39; 有任何依赖性问题,例如&#34;包&#39; Microsoft.EntityFrameworkCore 。设计&#39;与所有&#39;不相容项目中的框架&#34; ,我们需要运行以下命令,
VS代码: -
dotnet add package Microsoft.EntityFrameworkCore.Design -v 1.1
Visual Studio
Install-Package Microsoft.EntityFrameworkCore.Design -v 1.1
答案 5 :(得分:5)
项目-> ManageNugetPackages->浏览->搜索“ Microsoft.EntityFrameworkCore.SqlServer”并安装或更新。
答案 6 :(得分:4)
在Visual Studio中,检查 NuGet软件包管理器=>管理解决方案的软件包 ,检查所有这些软件包,是否已在您的计算机中安装了解决方案,如下所示:
在检查所有上述软件包之后,我解决了相同的问题。
答案 7 :(得分:3)
请遵循以下步骤。
为实体框架核心安装实体框架核心设计和SQL Server数据库提供程序:
[HttpPost]
public ActionResult InformeSolicitantes()
{
return RedirectToAction("Expedientes", "Create");
}
导入实体框架核心:
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
并配置您的DbContext:
using Microsoft.EntityFrameworkCore;
答案 8 :(得分:3)
我也有同样的问题。我添加了以下内容。它对我有用
Microsoft.EntityFrameworkCore.SqlServer
答案 9 :(得分:3)
安装程序包EntityFrameworkCore.SqlServer:
home-component.html
Nuget: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/
答案 10 :(得分:3)
正如Win得分最高的答案所述,您可能需要安装Microsoft.EntityFrameworkCore.SqlServer NuGet软件包,但请注意,此问题使用的是asp.net核心mvc。在最新的ASP.NET Core 2.1中,MS包含了称为Microsoft.AspNetCore.App
的元包。https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2
如果在解决方案资源管理器中右键单击ASP.NET Core MVC项目,然后选择Edit Project File
如果ASP.NET core webapps使用using语句,则应该看到此元包
<PackageReference Include="Microsoft.AspNetCore.App" />
Microsoft.EntityFrameworkCore.SqlServer包含在此元包中。因此,在您的Startup.cs中,您可能只需要添加:
using Microsoft.EntityFrameworkCore;
答案 11 :(得分:2)
我相信这可以通过向Microsoft.EntityFrameworkCore.SqlServer.Design添加项目引用来解决
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
Microsoft.EntityFrameworkCore.SqlServer并没有直接安装在我的项目中,但.Design软件包无论如何都会安装它作为先决条件。
答案 12 :(得分:2)
您的解决方案效果很好。
当我观看此视频直到17分钟:https://www.youtube.com/watch?v=fom80TujpYQ 我在这里遇到问题:
services.AddDbContext<PaymentDetailContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DevConnection")));
UseSqlServer无法识别,所以我这样做了 安装软件包Microsoft.EntityFrameworkCore.SqlServer-版本3.1.5
& 使用Microsoft.EntityFrameworkCore;
然后我的问题解决了。关于我:从一开始我基本上就是一个纯粹的PHP程序员,而今天只有我开始.net编码,感谢.net的良好社区。 p>
答案 13 :(得分:2)
对我来说,此问题发生在Visual Studio Code中,我可以通过两个步骤来解决:
using Microsoft.EntityFrameworkCore;
dotnet build
。答案 14 :(得分:2)
首先添加Install-Package Microsoft.EntityFrameworkCore.SqlServer
接下来在您的.cs文件using Microsoft.EntityFrameworkCore;
最终将其添加到您的核心Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFrameworkSqlServer().AddDbContext<ApplicationContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
}
答案 15 :(得分:1)
我将 SqlServer
和 Sqlite
添加到我的项目中,出现了同样的问题。
对我来说,我之前安装了 Microsoft.EntityFrameworkCore
,它的版本是 5.0.6
。现在 Microsoft.EntityFrameworkCore.SqlServer
版本是 5.0.7
。安装后没有UserSqlServer
方法。
尝试修改csproj中的版本:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.7">
或者打开 NuGet
来更新包。
如果没有帮助,最重要的是重启VS
然后,一切正常。
答案 16 :(得分:1)
答案 17 :(得分:1)
对于仍然有此问题的任何人: 使用NuGet进行安装: Microsoft.EntityFrameworkCore.Proxies
此问题与将Castle Proxy与EFCore一起使用有关。
答案 18 :(得分:1)
缺少包裹。打开Package Manager控制台并执行以下代码:
Install-Package Microsoft.EntityFrameworkCore.SqlServer
答案 19 :(得分:1)
如果您在使用Sqlite时遇到此问题,则
。 我认为这是Sqlite版本的问题,当我使用此版本的SqLite
时也遇到了同样的问题版本2.2.4 :
检查版本here 后,我更改了版本,然后开始工作。
使用此按钮后没有错误
版本2.1.2 :
答案 20 :(得分:0)
我遇到了这个问题,似乎我没有添加所需的NuGet软件包,尽管我认为我已经这样做了,但请务必逐一检查。
答案 21 :(得分:0)
当前正在使用Entity Framework Core 3.1.3。以上解决方案都无法解决我的问题。
但是,在我的项目中安装软件包Microsoft.EntityFrameworkCore.Proxies解决了该问题。现在,在设置DBContext选项时,我可以访问UseLazyLoadingProxies()方法调用。
希望这对某人有帮助。请参阅以下文章:
答案 22 :(得分:0)
我必须使用
services.AddEntityFrameworkSqlite().AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
在Startup.cs的ConfigureServices方法中
答案 23 :(得分:0)
当我移至 Microsoft.EntityFrameworkCore.SqlServer v3.0.0和 Microsoft.EntityFrameworkCore.Tools v3.0.0
时,遇到了麻烦当我在两个库上都改回v2.2.6时,错误消失了。这不是解决方案,而是解决方法,但可以解决问题,直到问题解决为止。
答案 24 :(得分:0)
安装包:
**Microsoft.EntityFrameworkCore.SqlServer**
然后添加课程顶部:
**Microsoft.EntityFrameworkCore;**
对我有用
答案 25 :(得分:0)
我遇到了同样的问题,但是回过头来解决DbContext
这类不正确的语法问题(如应该是ExampleDbContextClass: DbContext
)后问题就解决了,而我错过了Context Class中的DbContext
部分定义您的DbSet
。另外,我还验证了需要以下依赖关系才能实现与SqlServer的连接。
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" />
为了安全起见,还请确认您安装的版本小于项目的当前版本。例如,如果您的项目正在使用3.1,请不要尝试使用较新的版本,例如3.1.9。我也有这个问题。
答案 26 :(得分:0)
对于asp.net核心版本2.1,请确保添加以下程序包以解决此问题。 (至少使用SQLite可以解决此问题)
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design
此处是使用带有实体框架核心的SQLite的文档的参考。 https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite
答案 27 :(得分:0)
该项目适用于DotNET Core 3.1+或更高版本(将来)
添加此软件包:
Microsoft.EntityFrameworkCore.Tools
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.8">
答案 28 :(得分:0)
我简单地解决了这个问题:
将SqlServerDbContextOptionsExtensions
添加到相关课程中
解决SqlServerDbContextOptionsExtensions
这解决了这个问题,默认情况下必须缺少一些引用。
答案 29 :(得分:0)
从Nuget安装以下软件包:-
答案 30 :(得分:0)
我阅读并完成了每个答案中指示的所有内容,我刚刚发现我的问题是我的 DbContext 上缺少构造函数
public Context(DbContextOptions<Context> options) : base(options) { }
我希望这可以帮助任何面临同样问题的人。
答案 31 :(得分:0)
就我而言:- 我已经点击了下面的命令,它已解决。 命令
<块引用>安装包 Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1
答案 32 :(得分:0)
哇,答案如此之多,却没人提到这个Microsoft.EntityFrameworkCore.InMemory软件包!
添加对此程序包的引用:
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.2" />
,您应该会很好。
答案 33 :(得分:-1)
我在软件包管理器控制台中安装了这三个文件,并且运行正常。
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design -Version 3.1.4 Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.1.8 Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.8