是否可以在.NET Standard 2.0类库中使用Entity Framework 6.3.0?

问题描述 投票:0回答:1

是否可以在.NET Standard 2.0类库中使用Entity Framework 6.3.0?

Dependencies -> Packages中,我引用了Entity Framework 6.3.0

而且我有这样的代码:

using System.Data.Entity;

public partial class AlertContext : DbContext

但出现以下错误:

类型或名称空间名称'Entity'在名称空间中不存在'System.Data'(您是否缺少程序集引用?)

找不到类型或名称空间名称'DbContext'(您是缺少using指令或程序集引用?)

entity-framework entity-framework-6 .net-standard
1个回答
3
投票

6.3.0是针对.NET Standard的Entity Framework 6的第一个版本;它针对.NET Standard 2.1以及.NET 4.0和.NET 4.5,如its Nuget listing中所示。 6.2.0仅针对.NET。

请注意,.NET Standard 2.0仍然不是有效目标。

根据您的情况,您可能可以将库多目标指向.NET(在下面的示例中是.NET 4.7.2)和.NET Standard 2.1:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>   
    <TargetFrameworks>net472;netstandard2.1</TargetFrameworks>
  </PropertyGroup>
</Project>

是否可行,取决于两个因素:

  • 您的其他参考文献。我上面提供的组合在大多数情况下会很好,因为.NET 4.7.2和.NET Standard 2.1可以引用.NET Standard 2.0程序包,该程序包涵盖了大多数但绝不是所有现代程序包。

  • 您希望从中使用库的框架。 .NET目标当然意味着该库可由相同.NET版本或更高版本的.NET Framework项目使用。 .NET Standard 2.1目标允许针对.NET Standard 2.1,.NET Core 3.0,Mono 6.4及更高版本以及最新版本Xamarin的项目使用该库。值得注意的遗漏是3.0之前的.NET Core版本。 EF6 <.not>>可用于.NET Core 1或2。有关完整列表,请参见.NET Standard .NET implementation support表。

  • *我使用.NET 4.7.2作为示例,因为.NET 4.6.1正式支持.NET Standard 2.0,Microsoft建议使用4.7.2或更高版本。有关更多信息,请参见my answer here

© www.soinside.com 2019 - 2024. All rights reserved.