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

Posted

技术标签:

【中文标题】如何在 Entity Framework Core 中将连接字符串传递给 DBContext?【英文标题】:How do I pass connection string to DBContext in Entity Framework Core? 【发布时间】:2020-12-07 09:54:17 【问题描述】:

是否可以在构造函数中配置/传递连接字符串到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;

以下答案:Pass connection string to code-first DbContext 不起作用。

【问题讨论】:

这能回答你的问题吗? .Net Core passing connection string to DBContext class 【参考方案1】:

Startup.cs

services.AddDbContext<YourDbContext>(options =>

     options.UseSqlServer(Configuration.GetSection("YourConn").Value);
     options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
);

appsettings.json

"YourConn": "yourconnectionstring"

已编辑

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 核心。我已经删除了 DI 标签。什么是服务对象? 你用什么? winform? 当前是控制台应用程序。 我编辑了帖子。你可以检查一下。忽略 startup.cs 和 appsettings.json。 谢谢。这正是我所需要的。

以上是关于如何在 Entity Framework Core 中将连接字符串传递给 DBContext?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Entity Framework Core 2 中播种?

如何处置 Entity Framework Core 内存数据库

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

如何使用 Entity Framework Core 正确保存 DateTime?

如何在 .NET Core 3.0 Entity Framework 中执行组加入?

请问在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句?