<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Ef Core花里胡哨系列(4) 多租戶

      Ef Core花里胡哨系列(4) 多租戶

      當(dāng)然,我們要考慮設(shè)計(jì)問題,例如,切換Schema或者改變數(shù)據(jù)庫時,Ef Core同樣也會刷新改實(shí)體的緩存,所以,首次查詢將會很慢,不適合大表。

      基于Schema實(shí)現(xiàn)多租戶

      在我的上一篇博客中 [Ef Core花里胡哨系列(3) 動態(tài)修改實(shí)體對應(yīng)的表(分表)、多租戶] 中我們實(shí)現(xiàn)了如何分表,同理,我們可以用近似的方法來切換表的Schema,只需要一點(diǎn)很小的改動。

      public class SampleDbContext(DbContextOptions<SampleDbContext> options)
          : DbContext(options)
      {
          protected override void OnModelCreating(ModelBuilder modelBuilder)
          {
              modelBuilder.Entity<User>().ToTable($"User{DateTime.Now.ToString("yyyyMM")}", YourSchema);
      
              base.OnModelCreating(modelBuilder);
          }
      }
      

      基于多庫實(shí)現(xiàn)多租戶

      實(shí)現(xiàn)切換數(shù)據(jù)庫我們將會采用的是Interceptor攔截器來實(shí)現(xiàn)。

      建議租戶相關(guān)的操作采用單獨(dú)的DbContext和系統(tǒng)表區(qū)分開。

      public class TenantDbConnectionInterceptor<T> : DbConnectionInterceptor
      {
          public TenantDbConnectionInterceptor()
          {
          }
      
          public override InterceptionResult ConnectionOpening(DbConnection connection, ConnectionEventData eventData, InterceptionResult result)
          {
              connection.ConnectionString = "對應(yīng)租戶的連接字符串";
      
              return base.ConnectionOpening(connection, eventData, result);
          }
      
          public override ValueTask<InterceptionResult> ConnectionOpeningAsync(DbConnection connection, ConnectionEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)
          {
              connection.ConnectionString = "對應(yīng)租戶的連接字符串";
      
              return base.ConnectionOpeningAsync(connection, eventData, result, cancellationToken);
          }
      }
      

      使用攔截器

      services.AddDbContext<DynamicDbContext>(opts =>
      {
          opts.AddInterceptors(new TenantDbConnectionInterceptor());
      });
      
      posted @ 2024-01-02 14:05  胖紙不爭  閱讀(386)  評論(2)    收藏  舉報(bào)
      主站蜘蛛池模板: 色AV专区无码影音先锋| 国产精品亚洲av三区色| 日韩精品国产二区三区| 亚洲男人天堂东京热加勒比| 日韩中文字幕一二三视频| 无码精品国产va在线观看dvd| 国产极品精品自在线不卡| 亚洲午夜亚洲精品国产成人| 九色精品国产亚洲av麻豆一 | 国产对白叫床清晰在线播放| 亚洲av熟女国产一二三| 一区二区三区国产偷拍| 久热这里有精品视频播放| 亚洲最大天堂在线看视频| 精品91在线| 色欲av久久一区二区三区久| 日韩一区二区三区高清视频| 精品少妇爆乳无码aⅴ区| 999精品色在线播放| 国产高清视频一区二区乱| 亚洲精品天堂在线观看| 黑森林福利视频导航| 国产无遮挡又黄又大又爽| 国产微拍一区二区三区四区| 精品国产一区二区三区国产馆| 巨鹿县| 国产高清无遮挡内容丰富| 高清中文字幕国产精品| 全南县| 国产无遮挡性视频免费看| 人摸人人人澡人人超碰97| 国产欧美日韩高清在线不卡| 国产国产久热这里只有精品| 一出一进一爽一粗一大视频| 日本亚洲一区二区精品| 午夜福利片1000无码免费| 92自拍视频爽啪在线观看| 337p粉嫩大胆色噜噜噜| 日本免费一区二区三区日本| 午夜福利影院不卡影院| 国产午夜福利视频第三区|