Другие языки программирования и технологии

Нужна книга-самоучитель по использованию БД SQL в связке с C#

Хочу освоить использование баз данных в языке C#, коий я изучаю на данный момент. Хотелось бы литературное произведение на эту тему.
Диян Йорданов
Диян Йорданов
2 508
Ну тут море вариантов... .

1) первое и незыблемое - ASP . NET. Книжек по нему много найдёте.
2) после получения данных из БД их можно преобразовывать в объекты, этим занимаются МНОГОЧИСЛЕННЫЕ (не только MS LINQ) объектно-реляционные привязки (ORM). среди наиболее удобных для пользователя как программиста - Active Record. Это когда каждую запись получаете и обновляете отдельно от всех остальных. Удобно это для работы с хранимыми процедурами, триггерами.
Однако с точки зрения microsoft удобным сочли Onit-of-work. Вероятно вручную вы никогда не будете применять подобные фреймворки (LINQ TO SQL, Entity Framework) но в поставке от MS они идут с сахаром (LINQ) и кодогенераторами что якобы заставит вас склониться к ним и простить все их хреновые стороны. :-)

Паттерн UoW означает что вы работаете с БД сколько захотите, а потом вызываете метод SubmitChanges. Здесь все ваши беды обретают реальное лицо, все Exception свалятся именно тут. Начнётся вброс данных в сервер. Из этого следует что до вброса запуск хранимых процедур возможен лишь для чтения данных.

Кроме того сам LINQ не то что бы не удобен, просто некоторые его команды НЕ могут быть динамически создаваемыми. Сюда относится например Group By. Ещё LINQ грузит процессор, примерно 80 запросов / сек убьют Core2Duo E6750. Для сравнения ADO . NET позволяет выдать 3000 запросов/сек где сам ADO работает лишь 2% времени.

Есть много реализаций привязок к БД, удобнее конечно привязка с применением кодогенератора. Но он генерирует не совсем ровный код.. . не для всех случаев, не для всех баз данных.. .

Кстати, делать базу данных нужно с оглядкой на то какой свособ работы с ней вы выбрали. У каждой ORM свои ограничения на структуру таблиц. LINQ TO SQL не любит если у таблицы нет Primary Key. Хотя чисто ADO . NET безразлично есть он или нет его. Добавив к таблице триггер изменяющий данные то же самое. Как ORM это обработает? Вставились одни данные, а в итоге они стали совсем другими! К примеру, NHibernate предлагает снова извлекать данные по вставленной строке. Такой вот гемор.

В целом изначально я бы учил ADO . NET, правда применить его сложно и не так интересно как скажем LINQ TO SQL.
гугл в помощь