为什么我必须添加System.Data.Entity才能使用System.Data.Objects?

时间:2010-07-08 18:37:51

标签: c# .net namespaces

我仍在学习编程,你可以通过我的问题来解释。

为什么我必须添加System.Data.Entity作为我的项目的引用才能使用System.Data.Objects?对象是否存在于命名空间System.Data.Objects中?对象存在于System.Data.Entity.Objects中是否有意义?

4 个答案:

答案 0 :(得分:4)

.NET命名空间是交叉汇编的。这允许库设计者适当地扩展特定的命名空间,而不会污染具有非核心功能的核心库。单个DLL的命名是不幸的,但它不是以您的思维方式反映命名空间信息。

在您的示例中,System.Data.Entity是一个包含来自许多不同命名空间的元素的DLL。正如您所发现的那样,其中之一是System.Data.Objects。

答案 1 :(得分:3)

命名空间和程序集是完全独立的概念。 有时 - 哎呀,经常他们会匹配,但他们肯定没有。您不倾向于使用mscorlib命名空间,例如:)同样,大多数System.Linq类型都在System.Core.dll中。一个程序集可以包含多个名称空间中的类型,并且多个程序集可以对同一名称空间做出贡献。

值得保持这两个概念在你的脑海中尽可能不同。幸运的是,在MSDN的两个方面都很容易找到“生活”的类型。

答案 2 :(得分:0)

System.Data.Objects命名空间在System.Data.Entity.dll中定义。

答案 3 :(得分:0)

程序集名为System.Data.Entity,表示DLL System.Data.Entity.dll

System.Data.Objects是该程序集中的命名空间。

单个程序集可能包含一个或多个名称空间,可能都有不同的名称。