原创 EF core code first 修改主鍵的類型

一般的字段修改類型直接修改,然後add-migration, update-database,沒什麼問題,但是主鍵的話,直接修改會報錯,如果表的主鍵 作爲另一個表的外鍵的話,更會報錯 約束 'PK_ProcessRatio' 正由表 'M

原创 Identityserver

Identityserver 作用: protect your resources authenticate users using a local account store or via an external identity pr

原创 redis 高併發場景下的鎖的問題

簡單場景:一個下單按鈕,調用API, 庫存減去1 對於一般的訪問量不高的,代碼很簡單: 直接從sql獲取庫存,然後減一,然而當併發量提高的時候,從數據庫獲取,再到減一的過程中,庫存已經不是當時的庫存了,我們可能想到很多解決辦法,表鎖,時間

原创 EF CORE 延時加載

配置延時加載有2種方式 Proxies ILazyLoader service Proxies的話  install-package Microsoft.EntityFrameworkCore.Proxies protected ove

原创 EF 查詢數據

1.Single 如果您希望檢索一個實體的單個實例,則可以使用First或Single方法,具體取決於您是否希望有多個符合條件的行。 如果存在多個匹配行,則Single方法將引發異常。 sql: SELECT TOP(2) [a].[

原创 EF CORE EntityState 實體類狀態

Detached:對象存在,但未由對象服務跟蹤。在創建實體之後、但將其添加到對象上下文之前,該實體處於此狀態; Unchanged:自對象加載到上下文中後,或自上次調用 SaveChanges() 方法後,此對象尚未經過修改; Added

原创 Entity Framework Core Migrations

1.Creating a Migration [Command Line] dotnet ef migrations add <name of migration> [Package Manager console] add-migr

原创 https://github.com/aspnet/AspNetCore

https://github.com/aspnet/AspNetCore https://github.com/dotnet/corefx

原创 linux apache 配置

2、更新安裝列表:apt-get update apt-get install gcc build-essential sudo apt-get install make sudo apt-get install libexpat1-d

原创 Identity server sso平臺的用戶過期時間設置

安裝官網的配置方式是這樣的 services.AddIdentityServer() .AddInMemoryClients(Clients.Get()) .AddInMemoryIdentityResources(Re

原创 IdentityServer4 官網巨坑ef core

也不能說巨坑,只怪自己不仔細,其實官網上已經寫了,我直接忽略了 https://identityserver4.readthedocs.io/en/latest/quickstarts/4_entityframework.html 安裝

原创 IdentityServer4 Identity Resource中的user Claim

  Identity Resource 身份資源,裏面的UserClaims是用戶的一些屬性,默認情況下,即使寫再多的屬性,token中也只會返回sub一個,我們需要在代碼中加入  var builder = services.AddId

原创 IDS4 使用數據庫登錄

在AccountController 中的login 方法裏 驗證的時候與數據庫匹配 然後再實現IProfileService的方法,把Claims 對應進去。 private Claim[] GetUserClaims()

原创 ionic4 android 鍵盤坑

遇到的問題 只要出現鍵盤,ion-content的高度就變小, 把 <preference name="resizeOnFullScreen" value="true" /> 刪除  <preference name="KeyboardR

原创 rxjs 循環請求一次返回,類似promise.all

const promiseArray = [];     let flag = false;     this.componentMaterialFormArray.value.map(e => {       const materia