Насколько я знаю, когда вы используете Linq to SQL, вы сильно застряли в SQL Server.
Если вы используете Linq для DataSet, вы потеряете немного простоты программирования: с Linq вы можете использовать сущности Linq напрямую, в то время как с DataSets вы должны продолжать использовать имя DataSet (MyDataSet.Entity = new MyDataSet .Entity ()), который через некоторое время стареет. Я думаю, что это единственная жертва.
Однако вы можете использовать его, например, с Oracle (сделал это на проекте). Это также в значительной степени перетаскивание с немного большим контролем над DataAdapter (насколько я знаю - мне никогда не приходилось так сильно настраивать Linq-to-SQL), вы можете указать (например), какие запросы использовать и т. д.
Поскольку вы по-прежнему можете определять отношения между таблицами в DataSets, вы все равно можете использовать Linq достаточно хорошо, так что проблем там не будет.
Я полагаю, что надежность с Linq-to-DataSet так же хороша, как с Linq-to-SQL (никогда не было проблем), производительность казалась достаточно хорошей, хотя и не смогла ее профилировать.