首页 > 解决方案 > 如何使用 EF Core CosmosDB 提供程序维护唯一值

问题描述

我的课看起来像:

public class PortalAccount
{
        public Guid id{ get; set; }
        public string PortalAccountName { get; set; }
        public int PortalAccountState { get; set; }
        public string Address { get; set; }
}


protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.Entity<PortalAccount>().HasIndex(x => new { x.Address, x.PortalAccountState 
   }).IsUnique();
modelBuilder.Entity<PortalAccount>().ToContainer("PortalAccount").HasNoDiscriminator().HasPartitionKey("PortalAccountName");
}

当我尝试使用 PortalAccountState = 1 和 Address = "Addr1" 两次创建记录时,它正在插入 Cosmos 数据库中。它并没有限制我..

注意:我尝试使用 modelBuilder.Entity<PortalAccount>().HasAlternateKey(x => new { x.Address, x.PortalAccountState });.
通过使用上面的代码,它限制我不要创建重复的记录,但是当我试图更新记录时它会抛出异常。

我需要为创建和更新工作代码。有人可以帮我解决这个问题吗?

标签: c#asp.net-core.net-coreazure-cosmosdbef-core-2.0

解决方案


推荐阅读