Я использую LINQ to SQL около 2 лет с базами данных MySQL и PostgreSQL (используя DbLinq в Windows, используя Mono в Linux и Mac OS X).
Таким образом, LINQ to SQL НЕ ограничивается SQL Server, но, как указано выше, вам необходимо использовать внешние библиотеки.
В Mono DbLinq является основой пространства имен System.Data.Linq: вам не нужно развертывать / регистрировать сборки DbLinq. То же самое для сборки Npgsql: она уже предоставляется в последних версиях Mono.
Вы должны знать, что поддержка неполная (у меня было множество проблем, когда я пытался связать элемент управления ObjectDataSource с контекстом данных PostgreSQL: я решил их, выполнив ручное связывание данных с сгенерированными сущностями). Но этого достаточно для большинства запросов SQL (у меня почти никогда не было неудачных запросов: сложные соединения можно моделировать несколькими более простыми запросами).
Существует небольшая разница между DbLinq и LINQ to SQL. Только строка подключения должна быть настроена путем предоставления информации о поставщике данных. Посмотрите эти короткие примеры (я не нашел ни одного реального руководства по использованию DbLinq):
http://www.mono -project.com / Release_Notes_Mono_2.6
http://www.jprl.com/Blog/archive/development/mono/2009/Mar-12.html
Лично в Mono 2.10.6 я использую строку подключения этого типа: «Сервер = localhost; База данных = MyDB; Идентификатор пользователя = postgres; Пароль = MyPassword; DbLinqProvider = PostgreSql; DbLinqConnectionType = Npgsql.NpgsqlConnection, NpgsqlConlction, Npgsql = 4.0.0.0, Культура = нейтральная, PublicKeyToken = 5d8b90d52f46fda7 "
Примечание: в Mono инструмент DbMetal заменяется командой "sqlmetal", которая имеет те же параметры (это просто оболочка для DbMetal).