日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了在ASP.NET核心應用程序內動態更改SQL Server連接字符串的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我在開始時打開一個數據庫,然后需要根據用戶選擇的兩個值打開另一個數據庫。數據庫選擇必須在運行時進行,并且每次都會更改。

嘗試使用Connection字符串類訪問連接字符串,并嘗試了其他選項,如Singleton,我不理解這些選項。我在運行SQL Server Express的本地Windows 10系統上運行此程序。我使用ASP.NET Core 2.1進行編碼

> ASP.Net Core v2.1

構建多租戶、多年應用
每個客戶端每年將擁有一個SQL數據庫

我希望有一個具有以下結構的表格

COMPANY_CODE VARCHAR(3),
COMPANY_YEAR INT,
COMPANY_DBNAME VARCHAR(5)

樣本數據

COMPANY_CODE: AAD
COMPANY_YEAR: 19
COMPANY_DB: AAD19

COMPANY_CODE: AAD
COMPANY_YEAR: 18
COMPANY_DB: AAD18

COMPANY_CODE: AAD
COMPANY_YEAR: 17
COMPANY_DB: AAD17

因此,每家公司都會有多行–每個財政年度占一行。

COMPANY_DB列將存儲要為該會話打開的數據庫名稱。

一旦用戶通過身份驗證,我希望將連接字符串更改為指向選定行的COMPANY_DB列中的數據庫,然后讓登錄的用戶執行事務。

我想不出如何更改嵌入在Startup.cs中的連接字符串。

任何有關如何實現此目標的提示都將不勝感激。

推薦答案

據我所知,您為每個數據庫使用了一個DbContext類。這樣看起來docs。
從Startup中刪除AddDbContext,從DbContext中刪除OnConfiguring,并將options傳遞給構造函數。

public class BloggingContext : DbContext
{
    public BloggingContext(DbContextOptions<BloggingContext> options)
        : base(options)
    { }

    public DbSet<Blog> Blogs { get; set; }
}

然后寫服務提供DbContext

public interface IBlogContextProvider
{
    BlogContext GetBlogContext(string connectionString);
}

public class BlogContextProvider : IBlogContextProvider
{
    BlogContext GetBlogContext(string connectionString)
    {
        var optionsBuilder = new DbContextOptionsBuilder<BloggingContext>();
        optionsBuilder.UseSqlServer(connectionString);
        return new BlogContext(optionsBuilder);
    }
}

在您的Startup.cs中添加服務:

services.AddScoped<IBlogContextProvider, BlogContextProvider>();

現在您可以使用DI

public class HomeController : Controller
{
    private IBlogContextProvider _provider;

    public HomeController(IBlogContextProvider provider)
    {
        _provider = provider;
    }

    public ActionResult Index()
    {
        using (var context = _provider.GetBlogContext(<your connection string>))
        {
            //your code here
        }
        return View();
    }
}

編輯:當然,您可以將ConextProvider編寫為泛型。

這篇關于在ASP.NET核心應用程序內動態更改SQL Server連接字符串的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:asp.net-core connection-string errorChangeSQLServerConnectionStringDynamic
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定