В чем разница между использованием класса DataContext и SqlConnection? - PullRequest
4 голосов
/ 03 марта 2012

Это может быть очень расплывчатый вопрос, но я не совсем понимаю, что происходит. Я задал вопрос ранее , где мне сказали, что простой способ «привязать данные к объектам» - просто запустить SqlConnection ( connectionString ). В ответ также вошел комментарий о том, что я могу полюбить L2S и Entity Frameworks, поэтому я углубился в них. Кажется, все, что вам нужно сделать с объектом DataContext, это указать на базу данных. Почему SqlConnection приносит пользу?

В чем разница (или плюсы / минусы) использования любого из них? Является ли еще один "стандарт"? Еще один современный?

P.S. Я задавал много вопросов, на которые не нужно отвечать. Я просто хотел внести некоторую ясность в свой вопрос и насколько я не совсем понимаю эту тему.

1 Ответ

8 голосов
/ 03 марта 2012

SqlConnection является частью базовой, необработанной библиотеки классов ADO.NET - действительно, частью этой библиотеки для SQL Server.Это основа всего доступа к данным в .NET.

С необработанным ADO.NET вы довольно «скромны» и близки к цели - вам нужно создавать свои SQL-запросы и выполнять их,вы получаете строки и столбцы, очень похоже на то, что даст вам реляционная база данных.

Плюсы: действительно близко к SQL, действительно мощная, лучшая производительность
Минусы: сложнее писать, больше «склеивает» кодменьшая безопасность типов, более тесная связь с базовой структурой базы данных


DataContext (Linq-to-SQL) или ObjectContext (Entity Framework) являются абстракциями более высокого уровня - они располагаются поверх ADO.NET, но они (Linq-to-SQL или Entity Framework) предлагают так называемые возможности ORM - здесь вы на самом деле не имеете дело с необработанными операторами SQL и строками / столбцами, вместо этого эти генераторы кода создадут для вас уровень абстракции.который построен из .NET объектов.Каждая таблица в базе данных будет преобразована в соответствующий класс .NET со свойствами для всех столбцов в этой таблице.

Кроме того, в L2S и EF вы обычно используете LINQ для запроса - вашзапросы гораздо больше похожи на C #, и L2s / EF будет обрабатывать перевод этих запросов, которые вы выражаете в C #, в реальные операторы SQL, которые SQL Server будет выполнять.

Плюсы: с ними гораздо проще работать, гораздо приятнее (объекты со свойствами по сравнению с необработанными строками / столбцами), безопасность типов, возможность запроса с помощью LINQ, более высокая производительность разработчика
Минусы: другой уровень означает больше переводов, снижение производительности, не очень подходящее для определенных вещей (например, массовых операций)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...