Deploy your ASP.NET Core project as it is, with SQL Server next to it — no Dockerfile, no port setting, no connection-string code.
nesly treats .NET as a first-class stack, not a container you configure yourself. The .csproj is found, the SDK image follows the framework it targets (net8.0, net9.0, net10.0), the app is published ReadyToRun, and the listening address is set for you. Add SQL Server with one command and ConnectionStrings__Default is in the environment before the first request.
How it works
- 1
Point us at the project
A root .sln with projects under src/ is fine; with several .csproj files the one Microsoft.NET.Sdk.Web project is published. Nothing to add to the repository.
- 2
Attach SQL Server
nesly addon add mssqlcreates your own database and login. Your code keepsbuilder.Configuration.GetConnectionString("Default"); the value is injected, never committed. - 3
Deploy, migrate, go live
Set
release = "dotnet ef database update"and the bundled migrations run before each release goes live. The deploy is live only after the app answers.
What you get
The SDK your .csproj asks for
The build image follows <TargetFramework>; a new .NET release is usable the day Microsoft publishes its image, without waiting on us.
ReadyToRun by default
Publish is ReadyToRun so the first request after a cold start is fast. Native AOT stays your choice; it is not forced on EF Core projects.
No port to configure
ASPNETCORE_URLS is set to the address the platform routes to. Kestrel listens where it should without a line of code.
SQL Server that your app already understands
ConnectionStrings__Default and DATABASE_URL arrive as environment variables; EF Core and Dapper read them unchanged. Your login reaches only your own database.
PostgreSQL works the same way
Prefer Npgsql? nesly addon add postgres injects ConnectionStrings__Default for it too, so switching providers is a package change, not a platform change.
Migrations as part of the release
A Migrations folder is bundled into an EF bundle at build time; the release command runs it inside the runtime image, so schema and code ship together.
Pricing
Deploying .NET is included in every plan. SQL Server is on Pro (TRY 869 a month with VAT in Turkey, $18 without VAT elsewhere): your own database on a SQL Server Express instance, up to 10 GB per database, with nightly backups kept for 14 days.
- No licence fee and no instance fee for SQL Server Express; it is part of the plan.
- A dedicated SQL Server instance for larger databases is not on sale yet; write to us before you plan around one.
Use cases
A line-of-business API
ASP.NET Core Web API with EF Core migrations, SQL Server, and a staging preview the business can click through before release.
Blazor Server or Razor Pages
Server-rendered apps run as a container with their state on SQL Server or PostgreSQL; sign-in can be added without writing auth code.
Moving off a Windows host
Take the project as it is, attach SQL Server, restore your data with your own tools, and keep GetConnectionString("Default") as it was.
Questions, answered
- Which .NET versions are supported?
- Whatever your .csproj targets: net8.0, net9.0 and net10.0 today, because the SDK image is chosen from <TargetFramework> rather than from a fixed list.
- Do I need a Dockerfile?
- No. The platform writes one from your project on each build. If you have your own Dockerfile in the root, it is used instead, exactly as written.
- Is SQL Server available on the Free plan?
- No; SQL Server is a Pro addon. PostgreSQL is available on Free and also injects
ConnectionStrings__Default, so you can start there and switch. - Can I run EF Core migrations on deploy?
- Yes. With
release = "dotnet ef database update"the Migrations folder is bundled at build time and applied before the release goes live. Without a Migrations folder the build refuses and says why. - How big can the database be?
- Up to 10 GB per database on the shared Express instance. A dedicated instance is not on sale yet.
Related products
Databases and add-ons
PostgreSQL, MySQL, SQL Server, MongoDB, Valkey, object storage and outgoing mail — each attached with one command, connected by environment variables.
Sign-in
Put a sign-in in front of your site in one command, or give your app its own OpenID Connect client. No auth code to write.
Applications
Push your code; it is live in minutes. Every change gets its own address, and one command puts the last release back.
Start from the .NET + SQL Server template
nesly new dotnet-mssql copies a working ASP.NET Core project with EF Core; two commands later it is live with its database.