A Step-by-step guide on how to use the .Net Aspire Oracle component in Visual Studio. .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. Prerequisites Install .Net 8 Install Visual Studio 2022 version 17 or higher .Net Aspire Workload Container runtime such as Docker Desktop 10 Day .Net Aspire Challenge Objectives 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:- DotnetAspireChallenge.ApiService DotnetAspireChallenge.AppHost DotnetAspireChallenge.ServiceDefaults DotnetAspireChallenge.Web Getting Started Step 1: Install the following NuGet package 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); Step 2: Install another NuGet package 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"); Step 3: Create a “Customer” class public class Customer { public int Id { get; set; } [Required] public string Title { get; set; } = string.Empty; [Required] public string Description { get; set; } = string.Empty; } Step 4: Create an extension class 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 = "test@gmail.com", 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(); Step 5: Hit the GET endpoint 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 A Step-by-step guide on how to use the .Net Aspire Oracle component in Visual Studio. .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. Redis Postgres Prerequisites Install .Net 8 Install Visual Studio 2022 version 17 or higher .Net Aspire Workload Container runtime such as Docker Desktop Install .Net 8 .Net 8 Install Visual Studio 2022 version 17 or higher Visual Studio 2022 .Net Aspire Workload Container runtime such as Docker Desktop Docker Desktop 10 Day .Net Aspire Challenge 10 Day .Net Aspire Challenge 10 Day .Net Aspire Challenge Objectives 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:- Github Sample DotnetAspireChallenge.ApiService DotnetAspireChallenge.AppHost DotnetAspireChallenge.ServiceDefaults DotnetAspireChallenge.Web DotnetAspireChallenge.ApiService DotnetAspireChallenge.AppHost DotnetAspireChallenge.ServiceDefaults DotnetAspireChallenge.Web Getting Started Step 1: Install the following NuGet package Install the following Nuget package into the subsequent project “ DotnetAspireChallenge.AppHost ” DotnetAspireChallenge.AppHost dotnet add package Aspire.Hosting.Oracle 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); var oracle = builder.AddOracle("oracle") .AddDatabase("oracledb"); var apiService = builder.AddProject<Projects.DotnetAspireChallenge_ApiService>("apiservice") .WithReference(oracle); Step 2: Install another NuGet package Install the following Nuget package into the subsequent project “ DotnetAspireChallenge.ApiService ” DotnetAspireChallenge.ApiService dotnet add package Aspire.Oracle.EntityFrameworkCore dotnet add package Aspire.Oracle.EntityFrameworkCore then register the context into the Program.cs file as follows builder.AddOracleDatabaseDbContext<OracleDbContext>("oracledb"); builder.AddOracleDatabaseDbContext<OracleDbContext>("oracledb"); Step 3: Create a “Customer” class public class Customer { public int Id { get; set; } [Required] public string Title { get; set; } = string.Empty; [Required] public string Description { get; set; } = string.Empty; } public class Customer { public int Id { get; set; } [Required] public string Title { get; set; } = string.Empty; [Required] public string Description { get; set; } = string.Empty; } Step 4: Create an extension class 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 = "test@gmail.com", 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>(); } public static class AspireOracleExtension { public static void MapOracleAspireEndpoint(this WebApplication app) { app.MapGet("/oracle", async (OracleDbContext oracleDbContext) => { await oracleDbContext.Customer.AddAsync(new Customer() { Title = "test@gmail.com", 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(); app.MapOracleAspireEndpoint(); Step 5: Hit the GET endpoint 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 } } } } { "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 Github Project: GitHub - ssukhpinder/DotnetAspireChallenge: 10 Day .Net Aspire Challenge Github Project: GitHub - ssukhpinder/DotnetAspireChallenge: 10 Day .Net Aspire Challenge Cheatsheet: Cheat Sheets — .Net Cheatsheet: Cheat Sheets — .Net