公共(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/