【问题标题】:How do I pass connection string to DBContext in Entity Framework Core?如何在 Entity Framework Core 中将连接字符串传递给 DBContext?
【发布时间】: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 不起作用。

【问题讨论】:

标签: c# entity-framework-core db-first


【解决方案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。
  • 谢谢。这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多