Я новичок в Azure cosmos db или No SQL в целом. В рамках моей системы проектирования у меня есть два объекта PrintGroup
и PrintDocument
, как показано ниже:
class PrintGroup
{
public Guid Id { get; set; }
public string Name { get; set; }
public ICollection<PrintDocument> Documents { get; set; }
}
class PrintDocument
{
public Guid Id { get; set; }
public string DocumentType { get; set; }
public string Name { get; set; }
}
Для моего контейнера космоса мне нужно сохранить отдельные документы PrintDocuments, а также встроить их в документы PrintGroup. . Я использую EFCore 3.1 с поставщиком cosmos, и моя конфигурация следующая:
public void Configure(EntityTypeBuilder<PrintGroup> builder)
{
builder.HasKey(p => p.Id);
builder.OwnsMany<PrintDocument>(p => p.Documents);
}
Но когда я это делаю, он только встраивает документы и не сохраняет документы для печати отдельно. введите описание изображения здесь Мне нужны документы для печати, потому что они служат в качестве основных данных для различных клиентов, которые затем могут настраивать их для своих контекстов печати. Если я удалю оператор builder.OwnsMany<Document>(p => p.Documents);
, он добавляет отдельные документы для печати, но не встраивает их в контекст печати, и тогда мне потребуется получить документы отдельно. Это дает мне возможность создавать отдельные сущности для PrintDocument
, чего я не хочу делать.
Я просмотрел некоторые руководства по проектированию сущностей для EFcore с помощью cosmos db, но упомянутые примеры очень базовые c и не распространяется на сценарий, в котором моей модели сущностей необходимо генерировать гибридные данные в базе данных космоса.
Пожалуйста, предложите способ реализации этого, или если есть какие-либо внутренние изменения, которые я могу сделать в моем способе моделируются данные и дизайн сущности.