Почему я должен добавить System.Data.Entity для использования System.Data.Objects? - PullRequest
2 голосов
/ 08 июля 2010

Я все еще учусь программированию, как вы, вероятно, можете сказать по моему вопросу.

Почему мне нужно добавить System.Data.Entity в качестве ссылки на мой проект, чтобы использовать System.Data.Objects? Живут ли объекты в пространстве имен System.Data.Objects? Разве не имеет смысла для объектов жить в System.Data.Entity.Objects?

Ответы [ 4 ]

4 голосов
/ 08 июля 2010

Пространства имен .NET являются перекрестными. Это позволяет разработчикам библиотек расширять определенные пространства имен по мере необходимости, не загрязняя базовые библиотеки неосновной функциональностью. Присвоение имен отдельным DLL является неудачным, но оно не предназначено для отражения информации о пространстве имен в том виде, в каком вы думаете.

В вашем примере System.Data.Entity - это DLL, содержащая элементы из нескольких различных пространств имен. Одним из них является System.Data.Objects, как вы обнаружили.

3 голосов
/ 08 июля 2010

Пространства имен и сборки являются совершенно отдельными понятиями. Иногда - черт, часто они будут совпадать, но они, конечно, не должны.Например, вы не склонны использовать пространство имен mscorlib :) Аналогично, большинство типов System.Linq находятся в System.Core.dll.Одна сборка может содержать типы в нескольких пространствах имен, а несколько сборок могут вносить вклад в одно и то же пространство имен.

Стоит придерживаться двух концепций как можно более отчетливо.К счастью, из MSDN легко определить, где «живет» тип в обоих отношениях.

0 голосов
/ 08 июля 2010

Сборка называется System.Data.Entity, что означает DLL System.Data.Entity.dll.

System.Data.Objects - это пространство имен в этой сборке.

Одна сборка может содержать одно или несколько пространств имен, возможно, все с разными именами.

0 голосов
/ 08 июля 2010

Пространство имен System.Data.Objects определено в System.Data.Entity.dll.

...