微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

是否可以在构造函数中将连接字符串配置/传递给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不起作用。

解决方法

Startup.cs

import numpy as np

from pymoo.algorithms.nsga2 import NSGA2
from pymoo.algorithms.so_genetic_algorithm import GA
from pymoo.factory import get_problem,G1,Problem
from pymoo.model.evaluator import Evaluator
from pymoo.model.population import Population
from pymoo.optimize import minimize


class YourProblem(Problem):

    def __init__(self,n_var=10):
        super().__init__(n_var=n_var,n_obj=1,n_constr=0,xl=-0,xu=1,type_var=np.double)

    def _evaluate(self,x,out,*args,**kwargs):
        out["F"] = np.sum(np.square(x - 0.5),axis=1)


problem = YourProblem()

# create initial data and set to the population object - for your this is your file
N = 300
X = np.random.random((N,problem.n_var))
F = np.random.random((N,problem.n_obj))
G = np.random.random((N,problem.n_constr))


class Constant(YourProblem):

    def _evaluate(self,**kwargs):
        out["F"] = F
        out["G"] = G


pop = Population().new("X",X)
Evaluator().eval(Constant(),pop)

algorithm = GA(pop_size=100,sampling=pop)

minimize(problem,algorithm,('n_gen',10),seed=1,verbose=True)

appsettings.json

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

已编辑

YourDbContext.cs

"YourConn": "yourconnectionstring"

然后您就可以使用

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。