我仍在学习编程,你可以通过我的问题来解释。
为什么我必须添加System.Data.Entity作为我的项目的引用才能使用System.Data.Objects?对象是否存在于命名空间System.Data.Objects中?对象存在于System.Data.Entity.Objects中是否有意义?
答案 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
是该程序集中的命名空间。
单个程序集可能包含一个或多个名称空间,可能都有不同的名称。