溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置

發(fā)布時間:2021-12-30 09:25:29 來源:億速云 閱讀:121 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置

一般來說都會使用EF做遷移,那么如果讓EF支持.NET Cli命令行呢,打開項目。

IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置

在 </project> 之前添加一下代碼,用于支持Cli命令行,再此之后你可以去項目根目錄通過cmd.exe 執(zhí)行 doenet ef,如果沒有出現(xiàn)error,就ok了!如果出現(xiàn)問題大多是都是這個放錯位置了。

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
  </ItemGroup>

鑒于EF的靈活性,我們本篇文章使用SqlServer數(shù)據(jù)庫,就現(xiàn)在我們創(chuàng)建一個數(shù)據(jù)庫,還有一些相關(guān)的表。

IdentityServer4.EntityFramework.Storage中的實(shí)體維護(hù)SqlServer的最新SQL腳本。他們就在這里。(隨便創(chuàng)建一個數(shù)據(jù)庫,把那兩個表放進(jìn)去執(zhí)行就好)

 下面我們要在Server進(jìn)行配置了,需要在 Startup.cs 中的方法 ConfigureServices 進(jìn)行修改,首先我們定義了一個常量 connectionString ,這你肯定知道,這是一個數(shù)據(jù)庫連接字符串,再往下定義了一個 migrationsAssembly ,它獲取了程序集的名稱,再通過 AddIdentityServer 以及 AddOperationalStore 方法對數(shù)據(jù)庫的相關(guān)遷移配置進(jìn)行了賦值。

IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置

  再此期間你會引用 System.Reflection 以及 Microsoft.EntityFrameworkCore ,如上面所述,上面是硬編碼形式進(jìn)行配置了,更確切的說這些關(guān)于數(shù)據(jù)庫的配置都是一個叫做 ConfigurationStoreOptions 的對象,你可以隨便修改它,EF兼容的的數(shù)據(jù)庫它都是可以的。因?yàn)镮dentityServer4實(shí)現(xiàn)了EF可實(shí)現(xiàn)的接口。

它從哪里實(shí)現(xiàn)了呢?我們不難發(fā)現(xiàn),在 IdentityServerEntityFrameworkBuilderExtensions 中的定義中有一個叫做 AddOperationalStore 的參數(shù),它就是為了添加動態(tài)的存儲庫,定義如下。

IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置

IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置

可見它實(shí)現(xiàn)了DbContext,而大家都是.NET 程序員,所以我覺得你應(yīng)該知道了怎么回事了,就現(xiàn)在,請確保你的連接字符串正確,我們要開始進(jìn)行遷移了!執(zhí)行以下命令.

IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置

 如果沒有什么問題,那么結(jié)果一定如下所示,當(dāng)然您的項目中一定要安裝 Microsoft.EntityFrameworkCore ,否則將會出現(xiàn) ERROR:Microsoft.EntityFrameworkCore.Metadata.Internal.DirectConstructorBinding .

IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置

 您現(xiàn)在應(yīng)該在項目中看到一個 ?/Data/Migrations/IdentityServer 文件夾。 這包含新創(chuàng)建的遷移的代碼?,F(xiàn)在我們已經(jīng)添加了遷移,我們可以編寫代碼來從遷移中創(chuàng)建數(shù)據(jù)庫。 我們還將使用我們在之前的快速入門中定義的內(nèi)存配置數(shù)據(jù)對數(shù)據(jù)庫進(jìn)行種子處理。在Startup.cs中添加這個方法來幫助初始化數(shù)據(jù)庫:

IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置

上面的代碼可能需要將這些命名空間添加到您的文件中:

using IdentityServer4.EntityFramework.DbContexts; 
using IdentityServer4.EntityFramework.Mappers;

然后我們可以從Configure方法中調(diào)用它:

public void Configure(IApplicationBuilder app)
{  
   InitializeDatabase(app);    
}

現(xiàn)在,如果運(yùn)行IdentityServer項目,則應(yīng)創(chuàng)建數(shù)據(jù)庫并使用快速入門配置數(shù)據(jù)進(jìn)行種子設(shè)定。您應(yīng)該能夠使用SQL Server Management Studio或Visual Studio來連接和檢查數(shù)據(jù)。 IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置

  最后你可以根據(jù)這個Client表來配置你的Config.cs中的GetUsers這樣服務(wù)端的配置也就如此了,當(dāng)然你可以自定義數(shù)據(jù)庫的字段來適應(yīng)你的應(yīng)用程序,那么當(dāng)然沒更新一次你就可以通過EF的相關(guān)命令倆更新數(shù)據(jù)庫。那么所有的更新記錄就在 __EFMigrationsHistory 表中?!?/p>

關(guān)于IdentityServer4中如何使用EntityFramework Core進(jìn)行持久化配置就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI