温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

IdentityServer4中如何使用EntityFramework Core进行持久化配置

发布时间:2021-12-30 09:25:29 来源:亿速云 阅读:106 作者:柒染 栏目:大数据

这篇文章将为大家详细讲解有关IdentityServer4中如何使用EntityFramework Core进行持久化配置,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

IdentityServer4中如何使用EntityFramework Core进行持久化配置

一般来说都会使用EF做迁移,那么如果让EF支持.NET Cli命令行呢,打开项目。

IdentityServer4中如何使用EntityFramework Core进行持久化配置

在 </project> 之前添加一下代码,用于支持Cli命令行,再此之后你可以去项目根目录通过cmd.exe 执行 doenet ef,如果没有出现error,就ok了!如果出现问题大多是都是这个放错位置了。

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

鉴于EF的灵活性,我们本篇文章使用SqlServer数据库,就现在我们创建一个数据库,还有一些相关的表。

IdentityServer4.EntityFramework.Storage中的实体维护SqlServer的最新SQL脚本。他们就在这里。(随便创建一个数据库,把那两个表放进去执行就好)

 下面我们要在Server进行配置了,需要在 Startup.cs 中的方法 ConfigureServices 进行修改,首先我们定义了一个常量 connectionString ,这你肯定知道,这是一个数据库连接字符串,再往下定义了一个 migrationsAssembly ,它获取了程序集的名称,再通过 AddIdentityServer 以及 AddOperationalStore 方法对数据库的相关迁移配置进行了赋值。

IdentityServer4中如何使用EntityFramework Core进行持久化配置

  再此期间你会引用 System.Reflection 以及 Microsoft.EntityFrameworkCore ,如上面所述,上面是硬编码形式进行配置了,更确切的说这些关于数据库的配置都是一个叫做 ConfigurationStoreOptions 的对象,你可以随便修改它,EF兼容的的数据库它都是可以的。因为IdentityServer4实现了EF可实现的接口。

它从哪里实现了呢?我们不难发现,在 IdentityServerEntityFrameworkBuilderExtensions 中的定义中有一个叫做 AddOperationalStore 的参数,它就是为了添加动态的存储库,定义如下。

IdentityServer4中如何使用EntityFramework Core进行持久化配置

IdentityServer4中如何使用EntityFramework Core进行持久化配置

可见它实现了DbContext,而大家都是.NET 程序员,所以我觉得你应该知道了怎么回事了,就现在,请确保你的连接字符串正确,我们要开始进行迁移了!执行以下命令.

IdentityServer4中如何使用EntityFramework Core进行持久化配置

 如果没有什么问题,那么结果一定如下所示,当然您的项目中一定要安装 Microsoft.EntityFrameworkCore ,否则将会出现 ERROR:Microsoft.EntityFrameworkCore.Metadata.Internal.DirectConstructorBinding .

IdentityServer4中如何使用EntityFramework Core进行持久化配置

 您现在应该在项目中看到一个 〜/Data/Migrations/IdentityServer 文件夹。 这包含新创建的迁移的代码。现在我们已经添加了迁移,我们可以编写代码来从迁移中创建数据库。 我们还将使用我们在之前的快速入门中定义的内存配置数据对数据库进行种子处理。在Startup.cs中添加这个方法来帮助初始化数据库:

IdentityServer4中如何使用EntityFramework Core进行持久化配置

上面的代码可能需要将这些命名空间添加到您的文件中:

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

然后我们可以从Configure方法中调用它:

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

现在,如果运行IdentityServer项目,则应创建数据库并使用快速入门配置数据进行种子设定。您应该能够使用SQL Server Management Studio或Visual Studio来连接和检查数据。 IdentityServer4中如何使用EntityFramework Core进行持久化配置

  最后你可以根据这个Client表来配置你的Config.cs中的GetUsers这样服务端的配置也就如此了,当然你可以自定义数据库的字段来适应你的应用程序,那么当然没更新一次你就可以通过EF的相关命令俩更新数据库。那么所有的更新记录就在 __EFMigrationsHistory 表中。 

关于IdentityServer4中如何使用EntityFramework Core进行持久化配置就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI