Denominazione dei metodi dei servizi dati

6

Quando lavori con ORM che implementa il pattern UnitOfWork (Sessione di NHibernate, ObjectContext di Entity Framework, ecc.), esistono due tipi di metodi di servizi dati: quelli che salvano / confermano le modifiche e quelli che modificano solo le proprietà del modello.

Da qualche tempo diventa difficile supportare questo pasticcio: quando chiami un metodo non sei sicuro, se salverà o meno le modifiche (se non è necessario farlo in alcuni dei metodi esterni).

Come posso risolvere questo problema? L'unica idea che ho è una denominazione speciale. Ad esempio, AddCustomer per il metodo di salvataggio e FillForAddCustomer per il metodo non di salvataggio. Altre idee?

    
posta SiberianGuy 01.09.2011 - 14:06
fonte

1 risposta

2

I servizi che cambiano solo le proprietà del modello non mi sembrano come i servizi dati. Sembrano funzioni di modello e potrebbero (probabilmente dovrebbero) essere in una classe modello o in un'altra. Forse quei metodi non sono stati inseriti in una classe del modello perché non era chiaro dove appartenessero. Evito riferimenti circolari tra classi di modelli, quindi ho il permesso che i modelli proprietari dipendano da modelli di proprietà, ma mai viceversa. Poi metto i metodi che riguardano più modelli nella classe di livello più basso che possiede tutti i modelli interessati. In alternativa, se desideri propagare le modifiche dai modelli di proprietà ai loro proprietari, puoi consentire ai proprietari di osservare i loro figli.

Considerando AddCustomer : a cosa stai aggiungendo il cliente? Se la risposta è 'il database', allora vorrei solo scrivere

customer = new Customer(); 
customer.setProperties(...); /* Does whatever FillForAddCustomer does */
customer.save(); /* or whatever your ORM requires */
    
risposta data 01.09.2011 - 18:20
fonte

Leggi altre domande sui tag