我注意到,通过安装Entity Framework NuGet包,三个引用被添加到了项目中:
然后,我可以使用System.Data.Entity
而不在项目中引用它。这怎么可能?我该如何在自己的作品中实现它?
顺便说一句,我还查看了Microsoft提供的源代码,并确保程序集名称也为System.Data.Entity
:
答案 0 :(得分:1)
我可以使用System.Data.Entity而不在项目中引用它。这怎么可能?
System.Data.Entity是一个命名空间。
EntityFramework.dll包含许多属于System.Data.Entity命名空间的类型。 EG DbContext。
命名空间:System.Data.Entity
程序集:EntityFramework(在 EntityFramework.dll)
.NET Framework中有一个名为System.Data.Entity.dll的程序集,但EF不再使用它。 EF最初是.NET Framework本身的一部分,但现在通过NuGet交付。 .NET Framework的 still 部分仍旧支持EF的较早版本,因为使用较旧EF的较旧应用程序仍需要它。参见:
在早期版本的EF中,代码在核心库之间划分 (主要是System.Data.Entity.dll)作为.NET的一部分提供 框架和带外(OOB)库(主要是 NuGet包中附带的EntityFramework.dll)。 EF6接受代码 从核心库中提取出来,并将其合并到OOB库中。 为了使EF开源并为 它能够以与.NET Framework不同的速度发展。的 这样的结果是需要重新构建应用程序 针对已移动的类型。