2012-03-02 1 views
4

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

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

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

ответ

8

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, выше Dev производительности
Против: другой слой означает больше переводов, удар по производительности, плохо подходит для определенных вещей (например, массовые операции)

+0

Благодарим за отзыв. Это то, что я, вероятно, могу найти самостоятельно, но знаете ли вы о каких-либо хороших ресурсах по этим темам помимо MSDN? Это моя следующая «область изучения», поэтому я подумал, что лучше всего это сделать правильно. –

+0

@AdamBeck: MSDN - это, безусловно, ваше первое место; затем, если вы смотрите в EF, перейдите на http://thedatafarm.com/blog/ - блог Джулии Лерман, она - королева EF ;-) Также: если вы на ASP.NET, посмотрите http://www.asp.net, в котором также есть много материалов, связанных с данными (видео, учебники) –

+1

Это хорошее объяснение! Спасибо @marc_s, это помогает мне много –

Смежные вопросы