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

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

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

      Ef Core花里胡哨系列(5) 動態修改追蹤的實體、動態查詢

      Ef Core花里胡哨系列(5) 動態修改追蹤的實體、動態查詢

      同樣還是IModelCacheKeyFactory,不過這次要采用主動刷新的方式。

      實現DbContext

      動態實體,根據配置等生成動態類型來當作數據庫實體使用,當配置修改時,可以調用DynamicModelCacheKeyFactory.Refresh()刷新DbContext。

      動態構建部分不提供,我們將在其它的地方進行討論。

      public class SampleDbContext(DbContextOptions<SampleDbContext> options)
          : DbContext(options)
      {
          protected override void OnModelCreating(ModelBuilder modelBuilder)
          {
              // 構建所有的FormType
              FormTypeBuilderService.BuildFormTypes();
      
              // 將Type添加到DbContext上下文
              foreach (var type in FormTypeBuilderService.Value.GetModelTypes())
              {
                  AddFormEntityType(type);
              }
      
              base.OnModelCreating(modelBuilder);
      
              void AddFormEntityType(Type formType)
              {
                  var entityType = modelBuilder.Model.FindEntityType(formType);
                  if (entityType == null)
                  {
                      modelBuilder.Model.AddEntityType(formType);
                  }
                  modelBuilder.Entity(formType).HasBaseType((Type)null!);
              }
          }
      }
      

      實現IModelCacheKeyFactory

      我這里做了簡化處理,直接檢測了當前月份的變化,也可以通過實現一個靜態變量由外部動態改變。

      public class DynamicModelCacheKeyFactory : IModelCacheKeyFactory
      {
          private static Guid RefreshToken = Guid.NewGuid();
      
          public static Guid Refresh() => Guid.NewGuid(); 
      
          public object Create(DbContext context, bool designTime)
          {
              return DateTime.Now.ToString("yyyyMM");
          }
      }
      

      替換DbContext中的默認實現

      services.AddDbContext<SampleDbContext>(opts =>
      {
          opts.ReplaceService<IModelCacheKeyFactory, DynamicModelCacheKeyFactory>();
      });
      

      派生DbContext內置方法

      實現一個DynamicSet對標Set<T>,需要安裝System.Linq.Dynamic.CoreMicrosoft.EntityFrameworkCore.DynamicLinq,即可使用lambda進行拼接查詢。

      public class SampleDbContext(DbContextOptions<SampleDbContext> options)
          : DbContext(options)
      {
          protected override void OnModelCreating(ModelBuilder modelBuilder)
          {
              // 構建所有的FormType
              FormTypeBuilderService.BuildFormTypes();
      
              // 將Type添加到DbContext上下文
              foreach (var type in FormTypeBuilderService.Value.GetModelTypes())
              {
                  AddFormEntityType(type);
              }
      
              base.OnModelCreating(modelBuilder);
      
              void AddFormEntityType(Type formType)
              {
                  var entityType = modelBuilder.Model.FindEntityType(formType);
                  if (entityType == null)
                  {
                      modelBuilder.Model.AddEntityType(formType);
                  }
                  modelBuilder.Entity(formType).HasBaseType((Type)null!);
              }
          }
      
          public IQueryable DynamicSet(string tableId)
          {
              var type = FormTypeBuilderService.GetModelType(tableId);
              return (IQueryable)GetType().GetTypeInfo().GetMethod("Set", Type.EmptyTypes)!.MakeGenericMethod(type)
                  .Invoke(this, null)!;
          }
      }
      
      posted @ 2024-01-02 15:49  胖紙不爭  閱讀(487)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲av成人一区二区三区| 免费乱理伦片在线观看| 欧洲熟妇色xxxx欧美老妇免费| 国产极品美女高潮抽搐免费网站| 国产日本一区二区三区久久| 人人妻人人玩人人澡人人爽| 欧洲亚洲精品免费二区| 亚洲精品综合久久国产二区| 亚洲熟妇精品一区二区| 77777五月色婷婷丁香视频| 九九热视频免费在线播放| 亚洲精品无码日韩国产不卡av| 啦啦啦中文在线观看日本| 亚洲人成自拍网站在线观看| 国产一级区二级区三级区| 欧美日韩一线| 亚洲人成线无码7777| 你懂的亚洲一区二区三区| 麻豆人人妻人人妻人人片av| 被灌满精子的少妇视频| 色偷偷成人综合亚洲精品| 日本精品网| 亚洲国内精品一区二区| 国产精品九九九一区二区| 少妇被多人c夜夜爽爽av| 国产熟睡乱子伦视频在线播放| 国产精品久久欧美久久一区| 亚洲精品无码AV人在线观看国产| 狠狠亚洲色一日本高清色| 国产成人理论在线视频观看| 婷婷六月综合缴情在线| 无套内谢少妇高清毛片| 免费人成在线观看网站| 色综合亚洲一区二区小说| 性欧美VIDEOFREE高清大喷水| 欧美成人www免费全部网站| 精品国产免费人成在线观看| 熟女系列丰满熟妇AV| 麻豆一区二区三区精品视频| 人妻少妇乱子伦精品无码专区电影| 亚洲精品一区二区动漫|