问题描述
是否可以在构造函数中将连接字符串配置/传递给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);
}
}