Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据库第一错误实体框架.NET核心_C#_Asp.net Core_Entity Framework Core - Fatal编程技术网

C# 数据库第一错误实体框架.NET核心

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": [

我正在将旧类库转换为类库包。这个类库是一个旧项目的DAL层,我们将升级到最新的.NET

在旧类库中,我们首先使用edmx文件作为数据库。在新的.NET中,对edmx的支持已经停止,但我们仍然需要从数据库生成模型,因为数据库已经就位

为此,我遵循此链接中提供的步骤:

因此,我创建了一个新的类库包:

project.json是这样的:

{
  "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