Ответы здесь покрывают многие различия между Linq2Sql и EF, но есть ключевой момент, которому не уделяется много внимания: Linq2Sql поддерживает только SQL Server, тогда как EF имеет поставщиков для следующих RDBMS:
Предоставлено Microsoft:
- ADO.NET драйверы для SQL Server, OBDC и OLE DB
Через сторонних поставщиков:
- MySQL
- Oracle
- DB2
- VistaDB
- SQLite
- PostgreSQL
- Informix
- U2
- Sybase
- Synergex
- Firebird
- Npgsql
чтобы назвать несколько.
Это делает EF мощной абстракцией программирования для вашего хранилища реляционных данных, а это означает, что разработчики имеют согласованную модель программирования для работы независимо от базового хранилища данных. Это может быть очень полезно в ситуациях, когда вы разрабатываете продукт, который вы хотите гарантировать, будет взаимодействовать с широким спектром распространенных СУБД.
Еще одна ситуация, когда эта абстракция полезна, - это когда вы являетесь частью команды разработчиков, которая работает с рядом разных клиентов или с различными бизнес-единицами в организации, и вы хотите повысить производительность труда разработчиков за счет сокращения количества СУБД, которые они Необходимо ознакомиться с тем, чтобы поддерживать ряд различных приложений поверх различных СУБД.