1. 程式人生 > 其它 >多Key切換專案二

多Key切換專案二

前言

好久沒更新部落格了,最近一段時間休整了一下。

本週進度

我們將約束介面IMultipleKeyEntity改為基類MultipleKeyEntity並加入了統一的屬性來規範預設庫和SQLServer的實體型別,並加入了可以開始使用日期和結束使用日期,來對非當前可使用日期的資料進行排除,這樣可以保留歷史記錄.

加入生命週期LifeCycle支援非迴圈key和日、月、年的迴圈key來滿足業務需要,通過BackgroundService來做了個定時任務,目前還沒有加入慕等所以只能設定為24小時迴圈一次.

   return Task.Delay(86400000, stoppingToken).ContinueWith(
                t =>
                {
                    using var scope = _serviceProvider.CreateScope();
                    var multipleKeysProvider = scope.ServiceProvider.GetService<IMultipleKeysProvider<MultipleKeyEntity>>();
                    multipleKeysProvider?.TimingUpdateMultipleKeys();

                    ExecuteAsync(stoppingToken);
                }, stoppingToken);  

SQLServer這裡新增資料的時候有一個重複操作,應該會在下一次更新中完善實體得到解決

 // todo 
                        var data = (MultipleKeyEntity)value.Data.Clone();
                        data.UpdateLifeCycle(DateTime.Today.AddDays(1), value.LifeCycle);

                        var info = new SqlServerMultipleKeyInfo(data.LifeCycle,data.Maximum)
                        {
                            KeyName = data.GetType().Name,
                            Data = data,
                        };
                        info.UpdateLifeCycle(DateTime.Today.AddDays(1), value.LifeCycle);
                        _context.MultipleKeyInfo.Add(info);

另外打包後的專案生成的遷移檔案需要指定程式集名稱這裡使用要注意.

builder.Services.AddDbContext<SqlServerMultipleKeyContext>(o => o.UseSqlServer(
                @"Server=(localdb)\mssqllocaldb;Database=SwitchingMultipleKeys;Trusted_Connection=True",
                b => b.MigrationsAssembly("Test_MultipleKets")
));

下一步的計劃是先簡單修復下問題,然後開始著手UI部分,然後加入Redis版本來增強庫的使用。

倉庫在下面大家可以看看https://github.com/MrChuJiu/SwitchingMultipleKeys

結語

然後就是這個文章的目的,因為這個專案思路上比較清晰,而且專案解決的問題又是常見問題,所以這裡主要想和各位道友一起做,

有想加入的朋友可以直接 pull 下來,然後提pr、issues然後一起來做, 需要我幫助的朋友也可以群裡直接聯絡我。

當然目前感覺並不會有多少人真的參與進來,不過專案確實是個好專案,希望能給參與到的人簡歷加上一分。

另外我會根據這個標題更新專案進度和參與人,希望大家持續關注