Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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标准API/命名空间(实体框架核心)_C#_Asp.net Core_.net Core_Entity Framework Core_.net Standard - Fatal编程技术网

C# 专门针对较旧版本的单一.NET标准API/命名空间(实体框架核心)

C# 专门针对较旧版本的单一.NET标准API/命名空间(实体框架核心),c#,asp.net-core,.net-core,entity-framework-core,.net-standard,C#,Asp.net Core,.net Core,Entity Framework Core,.net Standard,我正在将应用程序中的.NET Core升级到2.1。借助最新的SDK(2.1.300),.NET标准有两个版本的Entity Framework Core。因此,当我右键单击下面的行并单击“转到定义”时,我会在下面的屏幕截图中获得选项 using Microsoft.EntityFrameworkCore; 请注意实体框架核心的2.1.0.0和2.0.3.0。我假设,默认情况下,我的目标是可用的最高版本(2.1.0.0)。我想特别针对2.0.3.0,因为我相信我的类库的EF数据提供程序支持2

我正在将应用程序中的.NET Core升级到2.1。借助最新的SDK(2.1.300),.NET标准有两个版本的Entity Framework Core。因此,当我右键单击下面的行并单击“转到定义”时,我会在下面的屏幕截图中获得选项

using Microsoft.EntityFrameworkCore;

请注意实体框架核心的2.1.0.0和2.0.3.0。我假设,默认情况下,我的目标是可用的最高版本(2.1.0.0)。我想特别针对2.0.3.0,因为我相信我的类库的EF数据提供程序支持2.1.0.0。但是,我想继续使用最新版本的SDK。有没有办法通过指定要使用的
Microsoft.EntityFrameworkCore
的版本号来实现这一点

如果这很重要的话,我已经完成了工作。以下是我的类库的.csproj的相关部分供参考:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.3" />
  </ItemGroup>

</Project>

netstandard2.0

你似乎把一些事情搞混了:

  • .NET核心SDK主要决定您可以使用的工具。除非您有充分的理由,否则您应该始终运行最新的SDK。因此,您应该使用SDK的当前版本
    2.1.300
    。SDK版本对您将使用的运行时没有直接影响
  • 如果要在.NET Core上的2.1版上运行ASP.NET Core应用程序,则必须使用
    netcoreapp2.1
    目标框架
  • 显然,您必须在2.1版中使用
    Microsoft.AspNetCore.
    软件包
  • 如果您想在2.0.x版本中使用EntityFrameworkCore,那么需要显式引用它。请注意,在这种情况下,您不能使用共享框架引用Microsoft.AspNetCore.App
因此,一个在.NET Core 2.1上使用ASP.NET Core 2.1、在Pomelo MySQL提供程序中使用Entity Framework 2.0的项目可能如下所示:

<Project Sdk="Microsoft.NET.Sdk.Web">

    <PropertyGroup>
        <TargetFramework>netcoreapp2.1</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore" Version="2.1.0" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.0" />
        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.3" />
        <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.1" />
    </ItemGroup>

</Project>
请注意,实体框架核心未包含在.NET标准中,它只是针对它,这意味着它构建在标准之上;就像你的图书馆项目一样

如果要从ASP.NET Core 2.1应用程序中使用库项目,则上述限制仍然适用:您不能使用
Microsoft.AspNetCore.App
共享框架引用,因为这将导致版本冲突

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.3" />
        <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.1" />
    </ItemGroup>

</Project>