5

Is it possible to configure/pass connection string to the DbContext in the constructor?

public partial class MyContext : DbContext
{
    public MyContext() { }
    public MyContext(DbContextOptions<MyContext> options) : base(options) { }
}

MyContext opt = new MyContext("con_str");

rather than hard coding it in:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseSqlServer(
        @"Server=(localdb)\mssqllocaldb;Database=MyDB;Integrated Security=True");
}

How do I use:

DbContextOptions<MyContext> opts;

The following answer: Pass connection string to code-first DbContext does not work.

mwal
  • 151
  • 3
  • 10
  • Does this answer your question? [.Net Core passing connection string to DBContext class](https://stackoverflow.com/questions/39090206/net-core-passing-connection-string-to-dbcontext-class) – Michael Freidgeim Sep 26 '21 at 12:31

1 Answers1

6

Startup.cs

services.AddDbContext<YourDbContext>(options =>
{
     options.UseSqlServer(Configuration.GetSection("YourConn").Value);
     options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
});

appsettings.json

"YourConn": "yourconnectionstring"

EDITED

YourDbContext.cs

public partial class MyContext : DbContext
{
    private string _conn = "";
    public MyContext(string conn) 
    { 
        _conn = conn;
    }
    public MyContext(DbContextOptions<MyContext> options) : base(options) { }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
         optionsBuilder.UseSqlServer(_conn);
    }
}

Then you can use

MyContext opt = new MyContext("con_str");
Asherguru
  • 1,687
  • 1
  • 5
  • 10