带有 EF Core 和 CosmosDB 的 ASP.Net Core - IdentityRole 问题

Jok*_*nto 6 entity-framework .net-core azure-cosmosdb

我正在尝试将我的 asp.net 核心应用程序从使用 Azure SQL 数据库迁移到使用 CosmosDB 数据库。

尝试使用以下错误消息创建集合时遇到问题:

System.InvalidOperationException: '实体类型 'IdentityRole' 具有属性 'ConcurrencyStamp' 作为其并发标记,但仅支持 '_etag'。考虑使用“EntityTypeBuilder.UseETagConcurrency”。

我已经尝试过这些更改,但没有一个可以解决问题。

  1. UseETagConcurrency在构建模型时添加了 builder.Entity<IdentityRole>().ToContainer("Roles").UseETagConcurrency();
  2. 我创建了新的派生类IdentityRole_etagRole模型添加了属性

有关如何解决此问题的任何想法?

谢谢您的帮助。

lee*_*n3o 3

弄清楚了!问题是角色和用户已经有一个并发令牌,该令牌存储在属性“ConcurrencyStamp”中。因此我们需要告诉 EF 这个属性是我们想要用于 Etag 并发的属性。因此,不要UseETagConcurrency()使用以下内容:

builder.Property(d => d.ConcurrencyStamp)
       .IsETagConcurrency();
Run Code Online (Sandbox Code Playgroud)