【问题标题】:Pass parameter to EntityFramework Core [duplicate]将参数传递给 EntityFramework Core [重复]
【发布时间】:2021-08-02 22:40:44
【问题描述】:

我需要连接几个看起来相同的数据库。当我引入数据库连接实例时,我想将 ConnectionString 名称作为参数传递。

上下文类

public class AppDbContext : DbContext
    {

        public AppDbContext(string test) : base(GetOptions(test))
        {

        }

        public DbSet<Cargo> Cargoes { get; set; }

        

        private static DbContextOptions GetOptions(string connectionString)
        {
            return SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder(), connectionString).Options;
        }

    }

启动

public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<AppDbContext>();
            services.AddControllers();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" });
            });
        }

代码

[HttpGet]
        public Cargo Get()
        {
            var test2 = new AppDbContext("TEST");
            return _appDbContext.Cargoes.FirstOrDefault(c => c.Code == "code");
        }

【问题讨论】:

    标签: c# entity-framework-core


    【解决方案1】:

    我认为最好创建一个单独的上下文:

    public class AnotherContext : AppDbContext 
    {
     
    }
    

    现在你可以配置它们了:

    services.AddDbContext<AppDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("FirstConnStr")));
    
    services.AddDbContext<AnotherContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("SecondConnStr")));
    

    【讨论】:

    • 如果你需要连接到10个不同结构的数据库? 50个怎么样?还是100?是的,我以前见过这种模式。
    • @DavidG 你知道如何解决我的问题吗?
    猜你喜欢
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2018-06-27
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    相关资源
    最近更新 更多