В общем, я бы выбрал чистое решение .NET вместо ODBC. Я не знаком ни с одним из этих драйверов для PostgreSQL, поэтому примите этот совет с осторожностью. Вот некоторые «общие» аргументы:
- Поскольку поставщики данных .NET являются более новой технологией, чем ODBC, они, как правило, будут получать больше внимания и обновлений, чем драйверы ODBC. Это, конечно, может не применяться в этом случае (возможно, за драйвером PostgreSQL ODBC стоит процветающее сообщество разработчиков). Тем не менее, более вероятно, что проблемы, с которыми вы можете столкнуться, будут решаться более своевременно в поставщиках данных .NET.
- Стек на стороне клиента будет немного меньше, если использовать чистый поставщик данных .NET. Я видел, что Npgsql является чистым решением .NET. Драйвер ODBC, с другой стороны, будет иметь более глубокий стек. Вызов должен проходить через поставщика ODBC .NET, который затем выполняет неуправляемый вызов диспетчера драйверов ODBC, который затем вызывает драйвер ODBC PostgreSQL. Будет ли это на самом деле влиять на производительность, будет зависеть от приложения и использования.
- Чистый поставщик .NET может быть более эффективным в том смысле, что он обычно написан специально для конкретного сервера базы данных. Напротив, поставщик ODBC .NET должен работать с диспетчером драйверов ODBC и не может делать предположения о серверной части.
Я повторяю, что приведенные выше утверждения являются общими, которые могут не применяться в данном конкретном случае, но, вероятно, заслуживают рассмотрения.