The .NET SDK also support Dependency Injection to ease the use of the SurrealDbClient
in your application.
Let’s start by creating a new ASP.NET Core web app.
dotnet new webapp -o SurrealDbWeatherApi cd SurrealDbWeatherApi dotnet add package SurrealDb.Net
Open appsettings.Development.json
and replace everything in there with the following code. We have added a new Connection String called SurrealDB
with the default configuration.
{ "AllowedHosts": "*", "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "SurrealDB": "Server=http://127.0.0.1:8000;Namespace=test;Database=test;Username=root;Password=root" } }
Open Program.cs
and replace everything in there with the following code. This code is using the AddSurreal()
extension method to inject services automatically. Notice that all we have to do is one line of code to configure the SurrealDB client with the previously set Connection String.
NoteBy default, this function will register both
ISurrealDbClient
andSurrealDbClient
using theSingleton
service lifetime.
var builder = WebApplication.CreateBuilder(args); var services = builder.Services; var configuration = builder.Configuration; services.AddControllers(); services.AddEndpointsApiExplorer(); services.AddSwaggerGen(); services.AddSurreal(configuration.GetConnectionString("SurrealDB")); var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run();
NoteIn this example, we use a Connection String to configure services. This is the most convenient way to initialize the
SurrealDbClient
in your application. You can always choose to construct a Connection String manually via aSurrealDbOptionsBuilder
and pass it to theAddSurreal()
method.
Open WeatherForecastController.cs
and replace everything in there with the following code. Finally, we can inject the ISurrealDbClient
inside our Controller.
using Microsoft.AspNetCore.Mvc; namespace SurrealDbWeatherApi.Controllers; [ApiController] [Route("[controller]")] public class WeatherForecastController : ControllerBase { private const string Table = "weatherForecast"; private readonly ISurrealDbClient _surrealDbClient; public WeatherForecastController(ISurrealDbClient surrealDbClient) { _surrealDbClient = surrealDbClient; } [HttpGet] [Route("/")] public Task<List<WeatherForecast>> GetAll(CancellationToken cancellationToken) { return _surrealDbClient.Select<WeatherForecast>(Table, cancellationToken); } [HttpPost] [Route("/")] public Task<WeatherForecast> Create(CreateWeatherForecast data, CancellationToken cancellationToken) { var weatherForecast = new WeatherForecast { Date = data.Date, Country = data.Country, TemperatureC = data.TemperatureC, Summary = data.Summary }; return _surrealDbClient.Create(Table, weatherForecast, cancellationToken); } // ... // Other methods omitted for brevity } public class CreateWeatherForecast { public DateTime Date { get; set; } public string? Country { get; set; } public int TemperatureC { get; set; } public string? Summary { get; set; } }
Then make sure your SurrealDB server is running on 127.0.0.1:8000
and run your app from the command line with:
dotnet run