Recentemente ho iniziato a usare c # per interfacciare con un database, e c'era una parte del processo che mi sembrava strana. Durante la creazione di un SqlCommand, il metodo che ho portato a prendere il modulo:
SqlCommand myCommand = new SqlCommand("Command String", myConnection);
Provenendo da uno sfondo Java, mi aspettavo qualcosa di più simile a
SqlCommand myCommand = myConnection.createCommand("Command String");
Sto chiedendo, in termini di design, qual è la differenza tra i due? L'espressione "singola responsabilità" è stata usata per suggerire che una connessione non dovrebbe essere responsabile della creazione di SqlCommands, ma direi anche che, a mio avviso, la differenza tra i due è in parte mentale rispetto alla differenza tra una connessione in esecuzione un comando e un comando che agiscono su una connessione, l'ultimo dei quali sembra meno simile a quello che sono stato portato a credere che OOP dovrebbe essere. C'è anche una parte di me che si chiede se i due debbano essere completamente separati e dovrebbero riunirsi solo in una sorta di metodo connection.execute(command)
. Qualcuno può aiutare a chiarire queste differenze? Alcuni di questi metodi sono "più corretti" rispetto agli altri da un punto di vista OO?
(P.S. il fatto che c # sia usato è completamente irrilevante. Mi ha appena evidenziato che sono stati usati approcci diversi)