Почему использование System.Data.Entity требует ссылки только на Entity Framework? - PullRequest
0 голосов
/ 10 ноября 2018

Я заметил, что после установки пакета Entity Framework NuGet в проект добавляются три ссылки:

  • EntityFramework
  • EntityFramework.SqlServer
  • System.ComponentModel.DataAnnotations

Тогда я могу использовать System.Data.Entity без ссылки на него в моем проекте. Как это возможно? И как я могу реализовать это в своих работах?

Кстати, я также посмотрел исходный код, предоставленный Microsoft, и убедился, что имя сборки тоже System.Data.Entity:

System.Data.Entity.csproj

1 Ответ

0 голосов
/ 10 ноября 2018

Я могу использовать System.Data.Entity без ссылки на него в моем проекте.Как это возможно?

System.Data.Entity - это пространство имен.

EntityFramework.dll содержит много типов, принадлежащих пространству имен System.Data.Entity.EG DbContext.

Класс DbContext

Пространство имен: System.Data.Entity

Сборка: EntityFramework (в EntityFramework.dll)

В .NET Framework есть сборка под названием System.Data.Entity.dll, но EF ее больше не использует.EF изначально был частью самой .NET Framework, но теперь поставляется через NuGet.Старая поддержка более старых версий EF является все еще частью .NET Framework, поскольку более старые приложения, использующие более старые EF, все еще нуждаются в этом.См .:

В предыдущих версиях EF код был разделен между основными библиотеками (в основном, System.Data.Entity.dll), поставляемыми как часть .NET Framework и внеполосными (OOB)библиотеки (в основном EntityFramework.dll) поставляются в пакете NuGet.EF6 берет код из основных библиотек и включает его в библиотеки OOB.Это было необходимо для того, чтобы позволить EF стать открытым исходным кодом и развиваться не так, как .NET Framework.Следствием этого является то, что приложения должны быть перестроены для перемещенных типов.

Обновление до Entity Framework 6

...