Динамический LINQ с другими базами данных

Существуют ли бесплатные (бесплатные) поставщики баз данных, отличных от MS SQL (например, MySQL или SQLite), которые работают с LINQ и поддерживают генерацию динамических запросов SQL? Например. table.Count() генерирует что-то вроде SELECT COUNT(*) FROM table и не загружает сначала всю таблицу, а затем подсчитывает строки.


person svick    schedule 19.10.2009    source источник


Ответы (3)


Вот проект DBLinq: http://code.google.com/p/dblinq2007/

DbLinq — это поставщик LINQ, который позволяет использовать общие базы данных с API, близким к Linq to SQL. В настоящее время поддерживает (в порядке появления): MySQL, Oracle, PostgreSQL, SQLite, Ingres, Firebird.

Я полагаю, что эти провайдеры выполняют Count() так, как вы описываете, зависит от качества провайдера. Предположительно предпринимаются некоторые усилия по оптимизации.

См. также http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

person Robert Harvey    schedule 19.10.2009
comment
На странице DBLinq нет никаких указаний, является ли он стабильным, последнему выпуску исполнился год (хотя последний раз SVN обновлялся вчера). Если нет ничего лучше, я попробую это. - person svick; 19.10.2009

Ознакомьтесь с ADO.NET Entity Framework. Он поддерживает MySQL через поставщиков данных ADO.NET и LINQ to Entities (аналогично LINQ to SQL). Будучи инструментом Microsoft, он имеет хорошую интеграцию и поддержку Visual Studio.

Можете ли вы также объяснить, почему вы хотите поддерживать эти базы данных?

person Ronald    schedule 19.10.2009
comment
Вы не ответили на мой вопрос: поддерживают ли эти провайдеры динамическую генерацию SQL? Я хочу использовать другие базы данных, потому что многие бесплатные хосты ASP.NET (да, я не хочу платить за свои личные веб-проекты) работают на Linux и Mono с MySQL в качестве БД. - person svick; 19.10.2009
comment
Глядя на stackoverflow.com/questions/42212/ и документацию (dev.mysql.com/doc/refman/5.0/en/connector-net.html) кажется, что MySQL Connector/NET поддерживает LINQ и Mono. Однако Entity Framework не поддерживается в Mono (пока что см. weblogs.asp.net/scottgu/archive/2008/01/07/)... - person Ronald; 19.10.2009
comment
EF сделает то, что вы задали в вопросе (преобразовать Count() в SELECT COUNT(*), да. - person Craig Stuntz; 21.10.2009

NHibernate поддерживает множество баз данных и имеет недавно выпущенный поставщик Linq.

person dahlbyk    schedule 19.10.2009
comment
Их поставщик LINQ кажется довольно проблематичным, они говорят, что версия 2 должна быть намного лучше. - person svick; 19.10.2009