В настоящее время я читаю о сохраняющихся объектах в .net. Таким образом, я не могу предложить лучшую практику, но, возможно, мои идеи могут принести вам некоторую пользу. Еще несколько месяцев назад я всегда использовал запросы, написанные вручную, — плохая привычка со времен ASP.classic.
Linq2SQL — очень легкий и простой в использовании. Мне нравятся возможности строго типизированных запросов и тот факт, что SQL не выполняется сразу. Вместо этого он выполняется, когда ваш запрос готов (все фильтры применены), таким образом, вы можете разделить доступ к данным от фильтрации данных. Кроме того, Linq2SQL позволяет мне использовать объекты предметной области, которые отделены от объектов данных, которые генерируются динамически. Я не пробовал Linq2SQL в более крупном проекте, но пока это кажется многообещающим. О, он поддерживает только MS SQL, что очень жаль.
Entity Framework. Я немного поэкспериментировал с ним, и он мне не понравился. Кажется, он хочет сделать все за меня и плохо работает с хранимыми процедурами. EF поддерживает Linq2Entities, что опять-таки допускает строго типизированные запросы. Я думаю, что это ограничено MS SQL, но я могу ошибаться.
SubSonic 3.0 (альфа) — это более новая версия SubSonic, которая поддерживает Linq. Самое классное в SubSonic то, что он основан на файлах шаблонов (шаблоны T4, написанные на C#), которые вы можете легко модифицировать. Таким образом, если вы хотите, чтобы автоматически сгенерированный код выглядел иначе, просто измените его :). Я пока пробовал только предварительный просмотр, но сегодня посмотрю на альфу. Посмотрите здесь SubSonic 3 Alpha. Поддерживает MS SQL, но скоро будет поддерживать Oracle, MySql и т.д.
На данный момент мой вывод состоит в том, чтобы использовать Linq2SQL до тех пор, пока SubSonic не будет готов, а затем переключиться на него, поскольку шаблоны SubSonics позволяют гораздо больше настроек.
12.12.2008