.Net Aspire framework is used to develop cloud and production-ready distributed applications. It consists of components to handle cloud-native concerns such as Redis, Postgres, etc.
Learn how to create a starter project using .Net Aspire with the Oracle EF Core component.
Github Sample: The solution structure is divided into the following projects:-
Install the following Nuget package into the subsequent project “DotnetAspireChallenge.AppHost”
dotnet add package Aspire.Hosting.Oracle
In the above project, register a server database and consume the Oracle connection using the following code.
var oracle = builder.AddOracle("oracle")
.AddDatabase("oracledb");
var apiService = builder.AddProject<Projects.DotnetAspireChallenge_ApiService>("apiservice")
.WithReference(oracle);
Install the following Nuget package into the subsequent project “DotnetAspireChallenge.ApiService”
dotnet add package Aspire.Oracle.EntityFrameworkCore
then register the context into the Program.cs file as follows
builder.AddOracleDatabaseDbContext<OracleDbContext>("oracledb");
public class Customer
{
public int Id { get; set; }
[Required]
public string Title { get; set; } = string.Empty;
[Required]
public string Description { get; set; } = string.Empty;
}
Create an extension class and register a minimal API get method to demonstrate the Oracle EF context usage in the API Service
public static class AspireOracleExtension
{
public static void MapOracleAspireEndpoint(this WebApplication app)
{
app.MapGet("/oracle", async (OracleDbContext oracleDbContext) =>
{
await oracleDbContext.Customer.AddAsync(new Customer()
{
Title = "[email protected]",
Description = "sukh"
});
int rows = await oracleDbContext.SaveChangesAsync();
if (rows > 0)
{
return await oracleDbContext.Customer.FirstOrDefaultAsync();
}
else
{
return null;
}
});
}
}
internal class OracleDbContext(DbContextOptions options) : DbContext(options)
{
public DbSet<Customer> CustomersPgsql => Set<Customer>();
}
and finally, register in the Program.cs file
app.MapOracleAspireEndpoint();
Finally, navigate to the GET URL shown below in your browser. It will insert the specified customer into the Oracle database, retrieve the most recently inserted row, and display it as a response.
Add additional connection string properties using the JSON syntax
{
"Aspire": {
"Oracle": {
"EntityFrameworkCore": {
"DisableHealthChecks": true,
"DisableTracing": true,
"DisableMetrics": false,
"DisableRetry": false,
"Timeout": 30
}
}
}
}
Congratulations..!! You’ve successfully integrated the Oracle component into the .Net Aspire project.
Github Project: GitHub - ssukhpinder/DotnetAspireChallenge: 10 Day .Net Aspire Challenge
Cheatsheet: Cheat Sheets — .Net