C# 数据库第一错误实体框架.NET核心
我正在将旧类库转换为类库包。这个类库是一个旧项目的DAL层,我们将升级到最新的.NET 在旧类库中,我们首先使用edmx文件作为数据库。在新的.NET中,对edmx的支持已经停止,但我们仍然需要从数据库生成模型,因为数据库已经就位 为此,我遵循此链接中提供的步骤: 因此,我创建了一个新的类库包: project.json是这样的:C# 数据库第一错误实体框架.NET核心,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,我正在将旧类库转换为类库包。这个类库是一个旧项目的DAL层,我们将升级到最新的.NET 在旧类库中,我们首先使用edmx文件作为数据库。在新的.NET中,对edmx的支持已经停止,但我们仍然需要从数据库生成模型,因为数据库已经就位 为此,我遵循此链接中提供的步骤: 因此,我创建了一个新的类库包: project.json是这样的: { "version": "1.0.0-*", "description": "xPT.DAL Class Library", "authors": [
{
"version": "1.0.0-*",
"description": "xPT.DAL Class Library",
"authors": [ "Dawood" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"frameworks": {
"net46": {
"dependencies": {
"Microsoft.CSharp": "4.0.1",
"System.Collections": "4.0.11",
"System.Linq": "4.1.0",
"System.Runtime": "4.1.0",
"System.Threading": "4.0.11"
}
}
},
"dependencies": {
}
}
现在,当我安装Microsoft.EntityFrameworkCore.SqlServer时,如上面链接中所述,我遇到以下错误:
使用此命令:安装包Microsoft.EntityFrameworkCore.SqlServer
错误列表:
上面写着:
The dependency Microsoft.Extensions.Caching.Abstractions 1.0.0 in project xPT.DAL does not support framework .NETFramework,Version=v4.6
但根据文档,该库应支持上述4.5.1:
我做错了什么 更新:
看起来你还在用DNX。由于不再支持DNX,请随.NET CLI一起升级到.NET Core。您可以下载.NETCore
net46是desktop.NETFramework 4.6的目标框架名字TMF。您不需要引用该框架上的包,如Microsoft.CSharp和System.Collections,因为默认情况下它们是完整的.NET框架的一部分。只有在针对.NET标准版本(如netstandard1.6)时才需要这些
删除net46下列出的所有部门:
!!!!停止使用DNX!!!!
半个月前
DNX不受支持,自RC2以来未维护
您必须使用RC1或更早版本,因为它是最后一个DNX版本
RTM版本的软件包不能与RTM一起使用!卸载您的ASP.NET 5工具并从Microsoft page安装。好的,我花了大约一天的时间才弄明白,所以我在这里发布了我遵循的步骤,以使我的数据库首先在类项目.NET Core中工作,并使用.NET Core Web应用程序 步骤1-安装.NET内核 确保您使用的是.NET Core而不是DNX提示:创建新项目时,您应该能够看到.NET Core选项-如果不是从下载 如果在安装.NET Core时遇到问题,则错误类似于Visual Studio 2015 Update 3未正确安装-您可以使用以下命令运行安装:[DotNetCore.1.0.0-VS2015Tools.Preview2.exe SKIP_VSU_CHECK=1]-这将阻止安装执行Visual Studio检查 步骤2-创建项目 创建新的ASP.NET核心Web应用程序->然后在下一屏幕中选择Web应用程序 添加类库.NET核心项目 步骤3-安装EF软件包 打开类库的project.json文件,粘贴以下内容,然后保存文件:
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"NETStandard.Library": "1.6.0"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"net46": {
},
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-*"
}
}
}
}
}
这将恢复引用下的包
--------或
通过在PackageManager控制台中运行以下命令,可以使用Nuget Package Manager安装它们
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools –Pre
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
注意:如果安装后出现错误,请一次安装一个软件包
Microsoft.EntityFrameworkCore.Tools
然后将project.json frameworks部分的内容更改为:
"frameworks": {
"net46": {
},
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-*"
}
}
}
}
步骤4-创建数据库模型
现在,要生成数据库,请在PackageManager控制台中运行以下命令,不要忘记更改数据库的连接字符串
Scaffold-DbContext "Server=. ; Database=DATABASE; user id= USER ; password = PASSWORD;" Microsoft.EntityFrameworkCore.SqlServer
这将导致有关启动项目的错误:
为此,您必须将添加到类库的相同引用添加到.NET Web应用
因此,打开Web应用程序的project.json
在“依赖项”下,添加:
在“工具”下添加:
进行更改后,保存文件
这就是我的project.json的样子
然后在Package Manager控制台中针对类库再次运行命令:
如果尚未将类库的引用添加到Web应用,则会出现以下错误:
要解决此问题,请将类库的引用添加到Web应用程序:
最后
再次运行命令-在Package Manager控制台中:
这将在类库中的Models文件夹下创建实体
当我安装Microsoft.EntityFrameworkCore.SqlServerThe project.json时,仍然会遇到相同的错误。我的答案中的project.json在空类库中工作。你还有其他依赖项吗?没有-这是一个新的类库包,目前没有类-你可以在我在问题中共享的图像中看到整个项目。你认为这是因为Microsoft SQL Server数据工具版本吗?我理解。我创建了一个测试项目.NET核心类库包,它可以正常工作。似乎缓存仍然只适用于DNX XXX.NET Framework:如果您想在自己的项目中使用这些包,删除net46并添加新的dnx46 TFM,它应该可以工作。@BassamAlugili仍然存在相同的错误:project xPT.DAL中的依赖项Microsoft.Extensions.Caching.Abstractions 1.0.0不支持framework DNX,版本=v4.6。
Scaffold-DbContext "Server=. ; Database=DATABASE; user id= USER ; password = PASSWORD;" Microsoft.EntityFrameworkCore.SqlServer
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
Scaffold-DbContext "Server=. ; Database=DATABASE; user id= USER ; password = PASSWORD;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models