国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了Ef Core花里胡哨系列(5) 動態(tài)修改追蹤的實體、動態(tài)查詢。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

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

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

實現(xiàn)DbContext

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

動態(tài)構(gòu)建部分不提供,我們將在其它的地方進行討論。

public class SampleDbContext(DbContextOptions<SampleDbContext> options)
    : DbContext(options)
{
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // 構(gòu)建所有的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!);
        }
    }
}

實現(xiàn)IModelCacheKeyFactory

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

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中的默認實現(xiàn)

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

派生DbContext內(nèi)置方法

實現(xiàn)一個DynamicSet對標Set<T>,需要安裝System.Linq.Dynamic.CoreMicrosoft.EntityFrameworkCore.DynamicLinq,即可使用lambda進行拼接查詢。文章來源地址http://www.zghlxwxcb.cn/news/detail-772060.html

public class SampleDbContext(DbContextOptions<SampleDbContext> options)
    : DbContext(options)
{
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // 構(gòu)建所有的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)!;
    }
}

到了這里,關(guān)于Ef Core花里胡哨系列(5) 動態(tài)修改追蹤的實體、動態(tài)查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 深入理解 python 虛擬機:花里胡哨的魔術(shù)方法

    在本篇文章當中主要給大家介紹在 cpython 當中一些比較花里胡哨的魔術(shù)方法,以幫助我們自己實現(xiàn)比較花哨的功能,當然這其中也包含一些也非常實用的魔術(shù)方法。 在 Python 中, __hash__() 方法是一種特殊方法(也稱為魔術(shù)方法或雙下劃線方法),用于返回對象的哈希值。哈希

    2024年02月06日
    瀏覽(19)
  • 一款適合程序員的 Markdown 簡歷模版,拒絕花里胡哨

    一款適合程序員的 Markdown 簡歷模版,拒絕花里胡哨

    一款適合 IT 行業(yè)的 Markdown 簡約簡歷模版,拒絕花里胡哨 (1)安裝 Markdown 編輯軟件,推薦使用?Typora?編輯器(免費版 Typora 百度網(wǎng)盤下載點此下載)。 (2)下載本項目,修改?Resume.md?文件即可。 (3)將 style 文件夾下的所有的.css 復(fù)制到 Typora 的主題文件夾 (4)主題文件

    2024年02月06日
    瀏覽(22)
  • MATLAB | 這些各種各樣的花里胡哨的折線填充圖咋畫

    MATLAB | 這些各種各樣的花里胡哨的折線填充圖咋畫

    這些各種各樣的花里胡哨的折線填充圖咋畫? 折線下面填充純色的話area函數(shù)很容易做到,但上面那些各種花里胡哨的填充圖就沒那么容易做到了,本期就來講講這些玩意都是咋畫的: 事先說明,為了繪圖好看本文絕大多數(shù)圖像都使用如下函數(shù)進行修飾: 二維填充所用到的數(shù)

    2023年04月16日
    瀏覽(26)
  • 如何在C語言中將文字顯示為花里胡哨的多種顏色

    如何在C語言中將文字顯示為花里胡哨的多種顏色

    ????????Hello大家好!最近剛剛做完C語言的課程設(shè)計。在評分標準中有一項是展示界面美觀整潔。學前端的我對花里胡哨的界面情有獨鐘,這里為大家簡單介紹三種改變字體顏色的方法。 ????????注意:本文中所有演示截圖均來自VS 2022。 目錄 ?改變C語言顯示界面字體

    2024年02月03日
    瀏覽(20)
  • 【一步教學,一步到位】花里胡哨的3D翻頁卡片,隔壁產(chǎn)品都饞哭

    【一步教學,一步到位】花里胡哨的3D翻頁卡片,隔壁產(chǎn)品都饞哭

    with(cardShadowSizeFunc!!) { inParamMin = 0F inParamMax = 180F outParamMax = 50F outParamMin = 0F initValue = 10F } cardShadowDistanceFunc = CardShadowDistanceFunc() with(cardShadowDistanceFunc!!) { inParamMin = 0F inParamMax = 180F outParamMax = 50F outParamMin = 0F initValue = 10F } } 復(fù)制代碼 2.5.3 陰影變化 為了更好地模擬3D效果,卡片陰影

    2024年04月14日
    瀏覽(25)
  • 4.1EF Core

    EF Core是微軟官方的ORM框架,ORM即對象關(guān)系映射,也就是我們可以直接操作C#中的對象就可以完成數(shù)據(jù)庫的操作。 EF Core環(huán)境搭建 首先要創(chuàng)建C#對象,用以對應(yīng)數(shù)據(jù)庫中的表,該C#對象也成為實體類。 根據(jù)所用的數(shù)據(jù)庫選擇NuGet包,本文使用SQLite數(shù)據(jù)庫,所以安裝Microsoft.EntityF

    2024年02月05日
    瀏覽(18)
  • EF Core入門

    EF Core入門

    EF Core是微軟官方提供的ORM框架。EF Core不僅可以操作Microsoft SQL Server、MySQL、Oracle、PostgreSQL等數(shù)據(jù)庫,而且可以操作Azure Cosmos DB等NoSQL數(shù)據(jù)庫 前提條件:已經(jīng)完整安裝了Microsoft SQL Server 下面是一個實際操作EF Core的演示 這是項目最終的目錄,這里需要關(guān)注的就是 .cs 文件 首先新

    2023年04月09日
    瀏覽(18)
  • EF Core并發(fā)控制

    EF Core并發(fā)控制

    并發(fā)控制:避免多個用戶同時操作資源造成的并發(fā)沖突問題。 最好的解決方案:非數(shù)據(jù)庫解決方案 數(shù)據(jù)庫層面的兩種策略:悲觀、樂觀 悲觀并發(fā)控制一般采用行鎖 ,表鎖等排他鎖對資源進行鎖定,確保同時只有一個使用者操作被鎖定的資源。 EF Core沒有封裝悲觀并發(fā)控制的

    2024年02月10日
    瀏覽(20)
  • 【EF Core】實體的主、從關(guān)系

    【EF Core】實體的主、從關(guān)系

    假設(shè)有以下兩個實體: Homework 類表示家庭作業(yè),它并不是獨立使用的,而是與學生類(Student)有依賴關(guān)系。一位學生有多個家庭作業(yè)記錄,即 Homework 對象用于記錄每位同學的作業(yè)的。按照這樣的前提,Student 是主對象,Homework 是從對象。 Student 對象有個 Homeworks 屬性,用于引

    2024年02月11日
    瀏覽(24)
  • Net Core中使用EF Core連接Mysql數(shù)據(jù)庫

    Net Core中使用EF Core連接Mysql數(shù)據(jù)庫

    Entity Framework Core的前身是微軟提供并主推的ORM框架,簡稱EF,其底層是對ADO.NET的封裝。EF支持SQLServer、MYSQL、Oracle、Sqlite等所有主流數(shù)據(jù)庫。 首先是使用時的幾個模式的整理及其理解: Code First:根據(jù)代碼自動創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu)甚至是數(shù)據(jù)庫,可以支持多庫開發(fā),代碼較少冗余

    2024年01月24日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包