Поради щодо використання LINQ to SQL
LINQ --- LINQ to DataSet та SQL --- Поради щодо використання LINQ to SQL
»» У ДАНІЙ СТАТТІ ВИКОРИСТОВУЄТЬСЯ ВИХІДНИЙ КІД ДЛЯ ПРИКЛАДІВ
Використовуйте властивість DataContext.Log
Властивість Log об'єкта DataContext використовується для відображення трансльованого запиту SQL. Це може бути дуже корисно не тільки для налагодження, але і для аналізу продуктивності. Ви можете виявити, що запити LINQ to SQL транслюються дуже неефективні запити SQL. Або ж з'ясувати, що через відкладене завантаження асоційованих сутнісних класів доводиться виконувати більше SQL-запитів, ніж потрібно.Властивість DataContext.Log забезпечить отримання такої інформації.
Щоб скористатися перевагами цього засобу, необхідно просто привласнити DataContext.Log об'єкт System.IO.TextWriter, такий як Console.Out. Приклад наведено нижче:
Як бачите, властивості Log об'єкта DataContext на ім'я Northwind присвоюється Console.Out. Ось результат роботи прикладу:

Це дозволяє побачити точно, як виглядає згенерований SQL-запит. Зверніть увагу, що згенерований оператор SQL це не просто форматований рядок, він використовує параметри. Тому, застосовуючи LINQ to SQL, ми автоматично отримуємо захист від атак за допомогою SQL.
У кількох прикладах із наступних статей буде продемонстровано використання цього засобу протоколювання для виявлення потенційних проблем, пов'язаних із продуктивністю.
Використовуйте метод GetChangeSet()
Метод GetChangeSet() DataContext можна використовувати для отримання всіх сутнісних об'єктів, що містять зміни, які повинні бути збережені в базі даних при викликі SubmitChanges. Це зручно для протоколювання та налагодження.
Використання часткових класів або файлів відображення
Без сумніву, однією з головних труднощів використання будь-якого інструменту ORM є керування змінами бази даних. Якщо ви тримаєте всю логіку бізнес-класів та логіку LINQ to SQL в одних і тих же модулях, то цим створюєте проблеми супроводу при змінах бази даних.
Розгляньте можливість застосування часткових класів, поміщаючи бізнес-логіку модуль, окремий від модулів згенерованих сутнісних класів. Використовуючи часткові класи для зберігання ваших атрибутів бази даних LINQ to SQL окремо від бізнес-логіки, ви мінімізуєте необхідність додавання коду до будь-якого згенерованого сутнісного класу.
В якості альтернативи можна розділити бізнес-класи та відображення сутностей LINQ to SQL за допомогою зовнішнього файлу XML відображення. Йдеться про XML-файл, який відображає бізнес-об'єкти на базі даних, не покладаючись на атрибути LINQ to SQL.
Використання часткових методів
Часткові методи дозволяють втручатися у певні події, що відбуваються у сутнісних класах. Витонченість їх у тому, що якщо тіло часткового методу вирішено не реалізовувати, то при цьому не виникне жодних накладних витрат і компілятор не генеруватиме код, пов'язаний з їх викликом.