Я нахожусь в ситуации, когда создание сущности требует создания и идентификатора других сущностей, однако я не уверен, как это лучше всего реализовать с использованием MediatR .
Например, скажем, у меня есть объект User ...
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
public ICollection<Submission> Submissions { get; set; }
}
объект Submission ...
public class Submission
{
public int Id { get; set; }
public string Reference { get; set; }
public User User { get; set; }
public ICollection<QuestionsAndAnswer> QuestionAndAnswers { get; set; }
}
и объект QuestionAndAnswer.
public class QuestionAndAnswer
{
public int ID { get; set; }
public string Question { get; set; }
public string Answer { get; set; }
public Submission { get; set; }
}
Каждый пользователь может иметь несколько представлений, и каждое представление имеет несколько вопросов и ответов.
В этом случае пользователь прошел через ряд вопросов, предоставил ответы, заполненные в окончательной форме, котораяпредоставляет запрашивает их контактные данные, а затем представил информацию в API.На данный момент, я не уверен, как обрабатывать данные с помощью MediatR, потому что пользователь должен быть создан, и его идентификатор должен быть возвращен в результате для создания объекта представления, который, в свою очередь, необходим для сохранения вопросов и ответов.
Должен ли я реализовать команду, которая называется CreateUserWithSubmissionQuestionAndAnswersCommand, обработчик которой каким-то образом затем вызывает обработчики для трех отдельных команд и выполняет их по порядку, и если да, то как?
Я простоПотерял немного о том, как реализовать этот сценарий как единый HTTPRequest без нарушения CQRS.Единственный другой способ, о котором я мог подумать, это реализовать отдельные конечные точки, которые выполняют каждую из этих задач индивидуально, что требует от клиента совершать и принимать три отдельных вызова подряд (CreateUser, CreateSubmission, CreateQuestionAndAnswer)?
У кого-нибудь есть какие-либо идеи?