C# 为什么使用System.Data.Entity只需要引用实体框架?

C# 为什么使用System.Data.Entity只需要引用实体框架?,c#,.net,entity-framework,namespaces,C#,.net,Entity Framework,Namespaces,我注意到,通过安装Entity Framework NuGet包,项目中添加了三个引用: 实体框架 EntityFramework.SqlServer System.ComponentModel.DataAnnotations 然后我可以使用System.Data.Entity,而无需在项目中引用它。怎么可能呢?我如何在自己的作品中实现它 顺便说一下,我还查看了Microsoft提供的源代码,并确保程序集名称也是System.Data.Entity: 我可以使用System.Data.En

我注意到,通过安装Entity Framework NuGet包,项目中添加了三个引用:

  • 实体框架
  • EntityFramework.SqlServer
  • System.ComponentModel.DataAnnotations
然后我可以使用
System.Data.Entity
,而无需在项目中引用它。怎么可能呢?我如何在自己的作品中实现它

顺便说一下,我还查看了Microsoft提供的源代码,并确保程序集名称也是
System.Data.Entity

我可以使用System.Data.Entity,而无需在项目中引用它。怎么可能呢

System.Data.Entity是一个命名空间

EntityFramework.dll包含许多属于System.Data.Entity命名空间的类型。例如背景

命名空间:System.Data.Entity

程序集:EntityFramework(在 EntityFramework.dll)

在.NET Framework中有一个名为System.Data.Entity.dll的程序集,但EF不再使用它。EF最初是.NET框架本身的一部分,但现在通过NuGet提供。对旧版本EF的旧支持仍然是.NET框架的一部分,因为使用旧EF的旧应用程序仍然需要它。见:

在EF的早期版本中,代码在核心库之间拆分 (主要是System.Data.Entity.dll)作为.NET的一部分提供 框架和带外(OOB)库(主要是 EntityFramework.dll)在NuGet包中提供。EF6接受代码 并将其合并到OOB库中。 这是必要的,以使EF成为开源的,并用于 它能够以不同于.NET Framework的速度发展。这个 这样做的结果是需要重新构建应用程序 针对移动的类型


目标是什么?你有什么问题?@Aldert其实这不是问题,问题在于学习.NET如何工作。当然,我可以利用这些技术。啊哈,所以
System.Data.Entity
EntityFramework
assembly(在EF6中)中的名称空间!谢谢。这真的很有帮助。名称空间和程序集不是多对多的。程序集可以包含多个命名空间中的类,命名空间可以跨多个程序集包含类。