Entity framework core EF Core Cosmos DB provider不提供';t将id填充为键和鉴别器的组合

Entity framework core EF Core Cosmos DB provider不提供';t将id填充为键和鉴别器的组合,entity-framework-core,azure-cosmosdb-sqlapi,Entity Framework Core,Azure Cosmosdb Sqlapi,我使用CosmosDB(sqlcore)+EFCore(3.1.10)+CosmosDB提供程序(3.1.10) 我的实体有财产Id(以资本Id开头),歧视未关闭 因此,根据和其他文章,我希望id将被填充为鉴别器和id的组合(“EntityType | IdValue”)。然而,在我的例子中,id只是用鉴别器值填充的 我的代码: 实体: DbContext: class TestEntity3DbContext : DbContext { public DbSet<TestEnti

我使用CosmosDB(sqlcore)+EFCore(3.1.10)+CosmosDB提供程序(3.1.10)

我的实体有财产Id(以资本Id开头),歧视未关闭

因此,根据和其他文章,我希望id将被填充为鉴别器和id的组合(“EntityType | IdValue”)。然而,在我的例子中,id只是用鉴别器值填充的 我的代码: 实体:

DbContext:

class TestEntity3DbContext : DbContext
{
    public DbSet<TestEntity3> TestEntities3 { get; protected set; } = null!;

    public TestEntity3DbContext(DbContextOptions<TestEntity3DbContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        builder.HasDefaultContainer("UnifiedStorage");
        builder.Entity<TestEntity3>(o =>
        {
            o.HasKey(o => o.Id);
            o.HasPartitionKey(o => o.Id);
        });
    }
}
因此,我看到了此记录(删除了几个字段):

}

因此,这里有id=“TestEntity3”,但它应该是“TestEntity3 | fe2b7107-f9d0-4c7d-a594-F6BCAB36CD”

我错过什么了吗?有人知道怎么了吗


提前谢谢你。

我也看到了这一点,相信这是故意的

当您对分区键和主键使用相同的属性时,就会发生这种情况。其思想是,
id
在每个分区中应该是唯一的。在这种情况下,您的意思是每个分区键都是唯一的(即每个分区中只有一个实体),因此除了跟踪鉴别器之外,没有理由使用
id

class TestEntity3DbContext : DbContext
{
    public DbSet<TestEntity3> TestEntities3 { get; protected set; } = null!;

    public TestEntity3DbContext(DbContextOptions<TestEntity3DbContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        builder.HasDefaultContainer("UnifiedStorage");
        builder.Entity<TestEntity3>(o =>
        {
            o.HasKey(o => o.Id);
            o.HasPartitionKey(o => o.Id);
        });
    }
}
        _testEntityContext.TestEntities3.Add(new TestEntity3()
        {
            Id = Guid.NewGuid().ToString(),
            Prop3 = "Hello"
        });
        await _testEntityContext.SaveChangesAsync();
{
"Id": "fe2b7107-f9d0-4c7d-a594-f6bccaab36cd",
"Discriminator": "TestEntity3",
"Prop3": "Hello",
"id": "TestEntity3",
"_ts": 1605731991