public class dbcontext:DbContext
{
public DbSet<entity1> entities1 { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseCosmos(
"https://localhost:8081",
"C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw= = ",
"myDocuments");
}
public class entity1
{
[Key]
public string id { get; set; }
public string name { get; set; }
}
}
Ниже ошибка при попытке создать документ .. с использованием Microsoft.EntityFrameworkCore.Cosmos Preview3 и эмулятора космоса
Да, я это сделал, и он создает только новую коллекцию с именем dbcontext, но не будет отображаться в коллекции, которая у меня уже есть, которая является entity1





Я думаю, что причиной этого является предварительная версия поставщика Cosmos DB. У меня была такая же проблема. Я заранее создал свою коллекцию с помощью эмулятора хранилища, который требует от вас определения ключа раздела. Обратите внимание, что в поставщике предварительного просмотра Cosmos нет понятия «ключ раздела». Это огромная проблема для Cosmos DB. Однако эмулятор оказался довольно устойчивым.
Если вы сделаете так, как предлагает Ник Чапсас, и вызовете context.Database.EnsureCreated, вы увидите, что в эмуляторе создана новая коллекция. Если вы посмотрите на масштаб и настройки новой коллекции, вы не найдете ключа раздела. Ключ раздела - это обязательное поле при создании новой коллекции. Поставщик предварительного просмотра создает недопустимые коллекции. Эмулятор, похоже, согласен с этим, но Azure Cosmos DB - нет.
Я сделал context.Database.EnsureCreated (); вы правы, он создает новую коллекцию, вы говорите, что нет способа сопоставить существующую коллекцию с сущностью EF?
Нет, я не думаю, что у вас получится с текущим предварительным просмотром. Ключ раздела - это требование коллекций Cosmos DB, поэтому я не уверен, как поставщик EF создает коллекции без него, но это определенно так. Вы не можете создать коллекцию другим способом, не указав ключ раздела (который я нашел), и как только вы создадите коллекцию с ключом раздела, поставщик EF не распознает ваши коллекции. В основном превью сломано.
Вы удостоверились, что базы данных созданы? Для этого вы можете использовать
context.Database.EnsureCreated();.