Разработка C# сущностей для Azure cosmos DB и EF Core - PullRequest
0 голосов
/ 05 августа 2020

Я новичок в 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 и не распространяется на сценарий, в котором моей модели сущностей необходимо генерировать гибридные данные в базе данных космоса.

Пожалуйста, предложите способ реализации этого, или если есть какие-либо внутренние изменения, которые я могу сделать в моем способе моделируются данные и дизайн сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...