#SharePointProblems | Koskila.net

Solutions are worthless unless shared! Antti K. Koskela's Personal Professional Blog

How to get the EF Core Connection String?

koskila
Reading Time 3 min
Word Count 479 words
Comments 4 comments
Rating 2.8 (5 votes)
View

This article describes how to access and extract the connection strings from your Entity Framework (Core) database context objects. This is quite convenient if you need to display or log the connection string used for your current DbContext for some reason - or if you somehow form your DbContext objects dynamically, and need to verify which connection string you're using.

I'm sure there are other use cases, too. You probably have an interesting one, if you landed on this page!

Problem

A while ago, I had a situation where a DbContext was misbehaving after deployed to an Azure App Service, and I needed to check the connection string it's using directly in the code. I had reason to think my code was grabbing an outdated connection string and using a wrong database - and as you can probably imagine, that could cause some issues!

However, finding the right method actually took me googling, as there were plenty of examples for Entity Framework for .NET Framework, but next to nothing for Entity Framework Core.

So - let's fix that!

Long story short, here's how:

Solution

Time needed: 10 minutes.

How to extract the connectionstring from your Database Context in C#?

  1. Include the following using statements

    These work for Microsoft SQL Server connection strings - you might need something else if your data source is different.

    using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore;

  2. Instantiate your DbContext (or inject it)

    Whatever you do, just have it set - this is the variable we'll be using later on as well:

    // Injected in the constructor of the controller // or instantiated in the code ApplicationDbContext db;

  3. Get the connection and access ConnectionString property

    Like shown below:

    // Fetch the DbConnection object and // grab its Connection String db.Database.GetDbConnection().ConnectionString

    Oh - a quick word of advice:
    The connection string might contain your password. As Zaki Bhai points out in the comments below, this happens only if Persist Security Info = True has been specified in the connection string.

    Most of the time, you don't want to do this - and definitely do not log the connection string anywhere as is. If you plan to push it to Application Insights or something, remove the password from the string before doing that. Below I'll show one example on how to do that!

  4. (Optional) Sanitize your connection string to remove the password 😅

    In case you're displaying or logging this information somewhere, you need to (at the very least) remove or replace the password.

    This sample would be one way to achieve just that:

    Regex r = new Regex("Password='.+'"); string dummyPassword = "Password='Password123'"; string cs = db.Database.GetDbConnection().ConnectionString; string csSanitized= r.Replace(cs, dummyPassword); _monitor.TrackEventDebug("ReadOnlyDbContext", "ConnectionString", csSanitized);

    Now your connection string will be logged with a (hopefully) obvious dummy password. :)


And that should be it!

This instruction applies to .NET Core + EF Core (at least starting form around version 3.0).

Comments

Interactive comments not implemented yet. Showing legacy comments migrated from WordPress.
Swaleh
2021-01-08 22:29:58)
This was very helpful
Antti K. Koskela
2021-01-10 11:43:03
Thanks for your comment, Swaleh - happy to hear it was helpful!
Zaki Bhai
2021-02-10 09:58:04)
Well it does not contain you password, unless Persist Security Info = true is specifed in connection string
Antti K. Koskela
2021-02-10 16:34:58
Thanks Zaki - a valuable and valid addition. Added this in the article!
Whitewater Magpie Ltd.
© 2025
Static Site Generation timestamp: 2025-08-21T07:25:08Z