我相信有两个版本1和2?版本 2 被称为实体框架 4.0?
如何知道应用程序正在使用哪个版本?
这是在我的 web.config 中,这是否意味着我正在使用版本 2?
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
获取您正在使用的 EF 版本的另一种方法是在 Visual Studio 中打开包管理器控制台 (PMC),并在提示符下键入 Get-Package。第一行是 EntityFramework 并列出项目已安装的版本。
PM> Get-Package
Id Version Description/Release Notes
-- ------- -------------------------
EntityFramework 5.0.0 Entity Framework is Microsoft's recommended data access technology for new applications.
jQuery 1.7.1.1 jQuery is a new kind of JavaScript Library....
它显示更多内容,您可能需要向上滚动才能找到 EF 行,但这是我所知道的最简单的查找方法。
有两个版本:1 和 4。EFv4 是 .net 4.0 的一部分,EFv1 是 .net 3.5 SP1 的一部分。
是的,上面的配置设置指向 EFv4 / .net 4.0。
编辑 如果您打开引用文件夹并找到
system.data.entity
,单击该项目,然后在属性资源管理器中检查运行时版本号,您也会看到子版本。例如,我的显示运行时版本 v4.0.30319,其中 Version 属性显示 4.0.0.0。 EntityFramework.dll
也可以用这种方式查看。只有版本为 4.1.0.0,运行时版本为 v4.0.30319,这指定它是 .NET 4 组件。或者,您可以打开路径属性中列出的文件位置,然后右键单击相关组件,选择属性,然后选择详细信息选项卡并查看产品版本。
可以在packages.config文件中查看。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.0.2" targetFramework="net40-Client" />
</packages>
如果您使用 EF core,下面的命令可能会有所帮助
dotnet ef --version
回答您问题的第一部分:Microsoft 在此处发布了他们的 Entity Framework 版本历史记录。
如果您打开引用文件夹并找到system.data.entity,单击该项目,然后在属性资源管理器中检查运行时版本号,您也会看到子版本。例如,我的显示 v4.0.30319,版本属性显示 4.0.0.0。
如果你去引用,点击实体框架,查看属性它会告诉你版本号。
internal static string GetEntityFrameworkVersion()
{
var version = "";
var assemblies = System.AppDomain.CurrentDomain.GetAssemblies().Select(x => x.FullName).ToList();
foreach(var asm in assemblies)
{
var fragments = asm.Split(new char[] { ',', '{', '}' }, StringSplitOptions.RemoveEmptyEntries).Select(x=> x.Trim()).ToList();
if(string.Compare(fragments[0], EntityFramework, true)==0)
{
var subfragments = fragments[1].Split(new char[] { '='}, StringSplitOptions.RemoveEmptyEntries);
version =subfragments[1];
break;
}
}
return version;
}
对于 .NET Core,这是我了解我正在使用的 EntityFramework 版本的方式。假设我的项目名称是 DemoApi,我可以使用以下内容:
dotnet list DemoApi.csproj package
public static string GetEntityFrameworkDllVersion()
{
var efAssembly = System
.AppDomain
.CurrentDomain
.GetAssemblies()
.FirstOrDefault(x => x.FullName.Contains("EntityFramework"));
if (efAssembly == null)
{
return "EF is not installed in project";
}
return efAssembly
.GetCustomAttributes<AssemblyInformationalVersionAttribute>()
.First()
.InformationalVersion;
}
或者在 Visual Studio 中只需转到:
工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet 包...
它会向您显示每个项目使用的版本