Как общаться с базой данных портативным способом? - PullRequest
1 голос
/ 12 октября 2009

Я хотел бы запустить приложение, которое интенсивно использует базу данных и должно работать в Windows под .NET, а также Mac / Linux под Mono.

Проведя некоторые исследования, я понял, что ни LINQ-to-SQL, ни LINQ-to-Entities в настоящее время не готовы к работе в Mono ( здесь и здесь ). Согласно предыдущей ссылке, LINQ-to-SQL может, по крайней мере, перейти в Mono 2.6, который должен выйти в ноябре 2009 года.

Насколько я могу судить, Mono также реализует ADO.NET 2.0, хотя результаты теста выглядят не очень хорошо (при условии, что страница обновлена). Кроме того, использование сырого ADO.NET будет очень болезненным по сравнению с LINQ.

Какой API доступа к базе данных вы бы порекомендовали в этой ситуации?

Ответы [ 5 ]

3 голосов
/ 12 октября 2009

Если вы хотите ORM, используйте NHibernate. Если вам не нужен ORM, используйте ADO.NET.

1 голос
/ 12 октября 2009

После долгих исследований я обнаружил SubSonic, которая выглядит гораздо ближе к модели LINQ-to-SQL, чем nHibernate. Просто упомяну это, так как никто другой не имеет. Пока не уверен, будет ли это окончательный выбор.

1 голос
/ 12 октября 2009

Вот ссылка с поставщиками данных ADO.Net, которые поддерживает Mono:

http://www.mono -project.com / Database_Access

Вы не говорите, какую базу данных будете использовать при работе в Mono. Linq to SQL поддерживается только для MS SQL Server.

Как уже говорили другие, похоже, что nHibernate - это путь.

1 голос
/ 12 октября 2009

Я бы порекомендовал кодировать по интерфейсу здесь. Одна из замечательных особенностей .NET заключается в том, что он интенсивно использует интерфейсы, так что вы можете кодировать против IDbConnection, IDbCommand и так далее. Это означает, что вы можете кодировать свое приложение в ADO.NET так, чтобы оно практически не зависело от базы данных / поставщика.

0 голосов
/ 20 декабря 2009

Для справки, мы остановились на IQToolkit вместе с пользовательским инструментом для генерации классов из базы данных. Результат более низкого уровня, чем ActiveRecord стиль стиля; по сути, не более, чем добавление строгой типизации и поддержки LINQ поверх SQL.

...