如何在Entity Framework Core中将连接字符串传递给DBContext?

5

在构造函数中配置/传递连接字符串到DbContext是否可行?

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

MyContext opt = new MyContext("con_str");

使用变量代替硬编码:

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

我该如何使用:

DbContextOptions<MyContext> opts;

以下答案:将连接字符串传递给Code-First DbContext 无法使用。

这个回答解决了你的问题吗? .Net Core如何将连接字符串传递给DBContext类 - Michael Freidgeim
1个回答

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);
    }
}

然后,您可以使用

MyContext opt = new MyContext("con_str");

什么是startup.cs和appsettings.json?我不使用ASP.net core。我已经删除了DI标签。什么是services对象? - mwal
你用什么?WinForm? - Asherguru
1
谢谢。这正是我所需要的。 - mwal
谢谢@Asherguru,不管怎样我真的不得不在非常糟糕的条件下实现这个... *看着我的代码,哭泣... - Benyamin Limanto
DbContextOptions 对我来说不存在? - ThexBasic
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接