C#

C# Npgsql C# EF Core

Connect to CrateDB from C# .NET applications.

About

Npgsql is an open-source ADO.NET Data Provider for PostgreSQL, for programs written in C#, F#, or Visual Basic.

Synopsis

example.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net$(NETCoreAppMaximumVersion)</TargetFramework>
    <GenerateProgramFile>false</GenerateProgramFile>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Npgsql" Version="10.0.0-rc.1" />
  </ItemGroup>

</Project>

example.cs

using Npgsql;
using System;

// Connect to database.
var connString = "Host=localhost;Port=5432;Username=crate;Password=crate;Sslmode=disable";
var dataSourceBuilder = new NpgsqlDataSourceBuilder(connString);
var dataSource = dataSourceBuilder.Build();
var conn = dataSource.OpenConnection();

// Invoke basic query.
var cmd = new NpgsqlCommand("SELECT mountain, height FROM sys.summits ORDER BY height DESC LIMIT 3", conn);

// Display results.
var reader = cmd.ExecuteReader();
while (reader.Read())
    Console.WriteLine($"{reader.GetString(0)}: {reader.GetInt32(1)}");

Start CrateDB using Docker or Podman, then invoke the example program.

docker run --rm --publish=5432:5432 docker.io/crate '-Cdiscovery.type=single-node'
export DOTNET_CLI_TELEMETRY_OPTOUT=true
dotnet run

SSL connection

Use the Sslmode=require parameter, and replace username, password, and hostname with values matching your environment. Also use this variant to connect to CrateDB Cloud.

var connString = "Host=testcluster.cratedb.net;Port=5432;Username=admin;Password=password;Sslmode=require";

Examples

Connect to CrateDB and CrateDB Cloud using .NET (C#)

https://github.com/crate/cratedb-examples/tree/main/by-language/csharp-npgsql

Connect to CrateDB and CrateDB Cloud using the Npgsql Entity Framework

https://github.com/crate/cratedb-examples/tree/main/by-language/csharp-efcore

See also