C#.NET + PostgreSQL
Я смотрю на работу над проектом, который использует C#.NET (сидя на коробке windows) в качестве основного языка и PostgreSQL в качестве бэкэнд-базы данных (бэкэнд сидит на коробке linux). Я слышал, что ODBC.NET позволяет легко интегрировать эти два компонента.
У кого-нибудь был опыт настройки C# и PostgreSQL для совместной работы? Если да, то есть ли у вас какие-либо предложения о том, как это сделать, проблемы, которые вы нашли и т. д.?
8 ответов:
Я работаю с C# и Postgres с помощью Npgsql2 компонент, и они работают быстро, я рекомендую вам.
вы можете скачать с https://github.com/npgsql/Npgsql/releases
Примечание: Если вы хотите приложение, которое работает с любой базой данных вы можете использовать DbProviderFactory класс и сделать ваши запросы, используя IDbConnection,IDbCommand, IDataReader и/или IDbTransaction интерфейсы.
Npgsql - .Net Provider for PostGreSQL-это отличный драйвер. Если вы использовали более традиционные ADO.NET рамки вам действительно повезло здесь. У меня есть код, который подключается к Oracle, который выглядит почти идентично подключениям PostGreSQL. Легче переходить от Oracle и повторно использовать клетки мозга.
Он поддерживает все стандартные вещи, которые вы хотели бы сделать с вызовом SQL, но он также поддерживает вызов функции (хранится порядки.) Это включает в себя возвращение ссылка курсоры. Документация хорошо написана и дает полезные примеры, не становясь философскими или тайными. Украсть код из документации и он будет сразу работать.
Франсиско Фигейредо, младший и команда проделали большую работу с этим.
Теперь он доступен на Github.
https://github.com/franciscojunior/Npgsql2в лучший сайт для информации-это: http://npgsql.projects.postgresql.org/
читать документацию! http://npgsql.projects.postgresql.org/docs/manual/UserManual.html
есть поставщик Linq для PostgreSQL в https://www.nuget.org/packages/linq2db.PostgreSQL/.
мы разработали несколько приложений с использованием visual studio 2005 с devart ado.net поставщик данных для PostgreSql (http://www.devart.com/pgsqlnet/).
одним из преимуществ этого поставщика является то, что он обеспечивает полную поддержку Visual Studio. Последние версии включают в себя все новые функции фреймворка, такие как linq.
сегодня большинство языков / платформ (Java, .NET, PHP, Perl и др.) может работать практически с любой СУБД (SQL Server, Firebird, MySQL, Oracle, PostgresSQL и др.)) так что я бы не волновался ни на секунду. Конечно, могут быть глюки и небольшие проблемы, но нет showstopper.
Как предложил jalcom, вы должны программировать против набора интерфейсов или, по крайней мере, набора базовых классов (DbConnection, DbCommand и т. д.), чтобы иметь легко адаптируемое приложение.
У вас не должно быть слишком много проблем. Как уже упоминалось, существует множество поставщиков данных .Net PostgreSQL. Одна вещь, на которую вы можете обратить внимание, - это то, что такие функции, как Linq, вероятно, не смогут использоваться.
Не позволяйте отсутствие поддержки Linq остановить вас. Шаблон, который я использую, - это всегда возвращать мои данные в списки, а затем linq away. Я начал делать это религиозно, когда обнаружил, что то же самое (по общему признанию неясное) выражение Linq в MySQL не возвращало те же данные, что и в Sql Server.
просто перейдите в инструмент-- > менеджер пакетов NuGet-- > менеджер пакетов Nuget
искать NpgSql а затем выберите свой проект и нажмите кнопку Установить
пример кода
public void Demo() { NpgsqlConnection connection = new NpgsqlConnection(); connection = d_connection; // your connection string connection.Open(); NpgsqlCommand cmd = new NpgsqlCommand(); try { cmd.Connection = connection; cmd.CommandText = "select * from your table name"; cmd.CommandType = System.Data.CommandType.Text; using (var dataReader = cmd.ExecuteReader()) { while (dataReader.Read()) { string answer= dataReader.IsDBNull(0) ? "" : dataReader.GetString(0); } dataReader.Dispose(); } } catch (Exception e) { } finally { cmd.Dispose(); connection.Dispose(); } }
Не используйте верхний регистр в postgreSql, потому что его регистр чувствителен.