Esiste un modo pattern / più pulito per salvare un oggetto grande con più classi nidificate?

1

Sono nel bel mezzo di un progetto piuttosto ampio che comporta la scomposizione di un'applicazione legacy ColdFusion molto vecchia e di grandi dimensioni e la creazione di alcuni servizi .NET al suo posto. A causa di questo, ci sono alcuni requisiti che non sono un grande fan di ciò che ha bisogno di supportare mentre passiamo a questo nuovo back-end. Uno di questi requisiti è un singolo endpoint che deve avere un payload JSON molto grande con molte sottoclassi facoltative / richieste e salvarlo tutto in una volta.

Ho suddiviso questi dati in un oggetto dominio piuttosto grande e in varie sottoclassi annidate, e salviamo ogni sottoclasse in una transazione se è inclusa nella richiesta.

Il codice ha un aspetto simile al seguente:

    using (var transaction = await _transactionFactory.CreateDbTransactionScopeAsync(token))
    {

        //save basic patient info 
        newPatient = await _patientRepo.CreatePatientAsync(request, transaction, token);

        //save patient medicare information
        if (request.PatientMedicare != null)
            newPatient.PatientMedicare = await _patientRepo.CreatePatientMedicareAsync(newPatient.Id, request.PatientMedicare, transaction, token);

        //save patient flags
        if (request.PatientFlags != null)
            newPatient.PatientFlags = await CreatePatientFlagsAsync(newPatient.Id, request.PatientFlags, transaction, token);

        //save patient code
        if (request.PatientCode != null)
            newPatient.PatientCode = await _patientRepo.CreatePatientCodeAsync(newPatient.Id, request.PatientCode, transaction, token);

        //save patient facilities
        if (request.PatientFacilities != null)
            newPatient.PatientFacilities = await CreatePatientFacilitiesAsync(newPatient.Id, request.PatientFacilities, transaction, token);

       ... etc (this goes on for 15+ subclasses)

Se potessi evitare di doverlo fare, ma finché non saremo in grado di riscrivere più di questo front-end ColdFusion questa è davvero l'unica opzione.

Esiste uno schema o qualcosa che lo renderebbe un po 'più pulito? Qualcosa come un costruttore o modello di fabbrica ma che gestisce il risparmio rispetto alla creazione / istanziazione di un oggetto?

Questo sarà un problema comune con cui ho a che fare con altri oggetti del dominio, un modo più semplice per avvicinarsi a questo sarebbe fantastico.

    
posta Hoser 01.08.2018 - 19:21
fonte

0 risposte

Leggi altre domande sui tag