azure - 如何通过 Entity Framework 核心代码优先方法从 cosmosdb 集合中设置分区键?

标签 azure asp.net-core .net-core entity-framework-core azure-cosmosdb

公共(public)类 TaxahandDbContext :DbContext { 公共(public) TaxahandDbContext(DbContextOptions 选项):基(选项) { 数据库.EnsureCreated(); }

    protected TaxathandDbContext()
    {
        Database.EnsureCreated();
    }

    public DbSet<Address> Address { get; set; }


    protected override void OnModelCreating(ModelBuilder modelBuilder)
            {                    
                OneCollectionPerDbSet(modelBuilder);
            }

    private void OneCollectionPerDbSet(ModelBuilder modelBuilder)
    {
        var dbSets = typeof(TaxathandDbContext).GetProperties(BindingFlags.Public | BindingFlags.Instance)
            .Where(p => p.PropertyType.IsGenericType && typeof(DbSet<>).IsAssignableFrom(p.PropertyType.GetGenericTypeDefinition()));
        foreach (var dbSet in dbSets)
        {`enter code here`
            var metadata = modelBuilder.Entity(dbSet.PropertyType.GetGenericArguments()[0]).Metadata;
            metadata.Cosmos().ContainerName = dbSet.Name;
        }
    }
}

最佳答案

根据 Microsoft documentation这很简单。需要注意的一件重要事情:您的分区键必须是字符串或 converted串起来!

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
        modelBuilder.Entity<TodoItem>()
            .HasPartitionKey(o => o.Id);
}

关于azure - 如何通过 Entity Framework 核心代码优先方法从 cosmosdb 集合中设置分区键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58412004/

相关文章:

azure - 是否可以模块化逻辑应用 ARM 模板

c# - 使用自定义本地化程序的 Asp .NET 5 数据注释本地化

c# - ASP.NET Core 等效于 ASP.NET MVC BeginExecuteCore

c# - 从 .net core 自定义日志记录到应用程序见解

asp.net-core-mvc - .NET Core : Process. Start() 留下 <defunct> 子进程

azure - 如何解决 Luis - 403 通话中通话量配额问题

azure - Azure VM 上的性能极其缓慢

azure - 发送/传递的 Azure 服务总线主题订阅消息的日志在哪里?

c# - AspNet Core - Controller 级别的输入/输出 JSON 序列化设置

c# - 在 C# 类中找不到默认接口(interface)