Connect an Entity Framework application to Neon
This guide describes how to create a Neon project and connect to it from an Entity Framework Core application. The example demonstrates how to set up a basic ASP.NET Core Web API project with Entity F...
Pre-built prompt for connecting .NET Entity Framework projects to Lakebase Postgres.
This guide describes how to create a Neon project and connect to it from an Entity Framework Core application. The example demonstrates how to set up a basic ASP.NET Core Web API project with Entity Framework Core using Npgsql as the database provider.
To connect to Neon from an Entity Framework application:
- Create a Neon Project
- Create a .NET project and add dependencies
- Configure Entity Framework
- Run the application
Create a Neon project
Section titled “Create a Neon project”If you do not have one already, create a Neon project.
- Navigate to the Projects page in the Neon Console.
- Click New Project.
- Specify your project settings and click Create Project.
Create a .NET project and add dependencies
Section titled “Create a .NET project and add dependencies”-
Create a new ASP.NET Core Web API project and change to the newly created directory:
Bash dotnet new webapi -n NeonEfExample cd NeonEfExample -
Delete the files
WeatherForecast.csandControllers/WeatherForecastController.csas we won't be using them:Bash rm WeatherForecast.cs Controllers/WeatherForecastController.cs -
Install required packages
Bash dotnet tool install --global dotnet-ef --version YOUR_DOTNET_VERSION dotnet add package Microsoft.EntityFrameworkCore.Design --version YOUR_DOTNET_VERSION dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version YOUR_DOTNET_VERSION
Configure Entity Framework
Section titled “Configure Entity Framework”-
Create a model class in
Models/Todo.cs:C# namespace NeonEfExample.Models { public class Todo { public int Id { get; set; } public string? Title { get; set; } public bool IsComplete { get; set; } } } -
Create a database context in
Data/ApplicationDbContext.cs:C# using Microsoft.EntityFrameworkCore; using NeonEfExample.Models; namespace NeonEfExample.Data { public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } public DbSet<Todo> Todos => Set<Todo>(); } } -
Update
appsettings.json/appsettings.Development.json:Add the connection string:
JSON { "ConnectionStrings": { "TodoDbConnection": "Host=your-neon-host;Database=your-db;Username=your-username;Password=your-password;SSL Mode=Require" } } -
Create a Todo controller in
Controllers/TodoController.cs:C# using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using NeonEfExample.Data; using NeonEfExample.Models; namespace NeonEfExample.Controllers { [ApiController] [Route("api/[controller]")] public class TodoController : ControllerBase { private readonly ApplicationDbContext _context; public TodoController(ApplicationDbContext context) { _context = context; } [HttpGet] public async Task<ActionResult<IEnumerable<Todo>>> GetTodos() { return await _context.Todos.ToListAsync(); } [HttpPost] public async Task<ActionResult<Todo>> PostTodo(Todo todo) { _context.Todos.Add(todo); await _context.SaveChangesAsync(); return CreatedAtAction(nameof(GetTodos), new { id = todo.Id }, todo); } } } -
Update
Program.cs:C# using Microsoft.EntityFrameworkCore; using NeonEfExample.Data; var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection"))); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); app.UseSwagger(); app.UseSwaggerUI(); app.UseAuthorization(); app.MapControllers(); if (app.Environment.IsDevelopment()) { app.Run("http://localhost:5001"); } else { app.UseHttpsRedirection(); app.Run(); } -
Create and apply the initial migration:
Bash dotnet ef migrations add InitialCreate dotnet ef database update
Run the application
Section titled “Run the application”-
Start the application:
Bash dotnet run -
Test the connection by navigating to
http://localhost:5001/swaggerin your browser. You can use the Swagger UI to create and retrieve Todo items.
Resources
Section titled “Resources”Next steps
Section titled “Next steps”- Add Object Storage: S3-compatible file storage that branches with your database
- Call an LLM with AI Gateway: Access foundation models from Anthropic, OpenAI, Google, and more with one credential
Need help?
Section titled “Need help?”Join our Discord Server to ask questions or see what others are doing with Neon. For paid plan support options, see Support.