Для прямого клиентского приложения winforms, которое подключается напрямую к базе данных, Linq является хорошей заменой ADO.NET, есть очень мало ошибок, с которыми вы столкнетесь. Используйте инструмент типа SQLMetal (или конструктор, встроенный в VS2008), чтобы сгенерировать объекты данных Linq и классы соединений с базой данных. Если вы хотите использовать сгенерированные объекты в качестве объектов «BE», вы можете просто скопировать этот материал и переместить его в любую нужную вам сборку (если вы хотите разделить сборки). Или же вы можете просто предоставить отдельные «бизнес-объекты» и слой перевода, который копирует данные из BE в сгенерированные объекты Linq и обратно.
Единственное, что я несколько раз сталкивался с Linq, это то, что он не очень хорошо поддерживает отключенные архитектуры. Например, если вы хотите иметь свой DAL на сервере и подключить к нему все свои клиентские приложения, вы столкнетесь с проблемами, если просто разрешите передавать свои объекты linq через сервер.
Если вы решите иметь отдельные бизнес-объекты (или иметь отключенную архитектуру), вы обнаружите, что вам нужно тщательно управлять отключением объектов Linq от контекста данных, а затем повторно присоединять их, когда вы будете готовы сохранить / обновить. Сначала стоит сделать несколько прототипов в этой области, чтобы убедиться, что вы понимаете, как это работает.
Другая вещь, которая часто вводит людей в заблуждение, заключается в том, что запросы linq не выполняются немедленно к базе данных, они выполняются только по мере необходимости в данных. Остерегайтесь этого, так как он может поймать вас, если вы этого не ожидаете (и это трудно обнаружить при отладке, потому что когда вы смотрите на запрос linq в отладчике, он будет выполняться для получения данных).
Также стоит рассмотреть платформу Entity как альтернативу linq2sql (вы все еще можете выполнять запросы linq2EF). EF является более полной ORM и имеет лучшую поддержку для отображения связанных таблиц на несколько объектов, но все еще страдает от слабой поддержки отключенных приложений. EF в .net 4.0 должен иметь лучшую поддержку для отключенных архитектур.