66 messaggi dal 12 febbraio 2016
Ciao a tutti,
sto cercando un progetto che mi aiuti a capire come organizzare tutte le varie classi e metodi di un repository per un sito web in webforms.
Sto cercando un progetto contenente un sito web e un progetto classlibrary con tutte le classi per gestire i vari metodi CRUD.
Faccio un esempio:
per un sito di vendita auto vorrei utilizzare la classe auto con i vari metodi per aggiungere un'auto nel db, modificare, leggere e eliminare.
La prima domanda che mi pongo è: i vari metodi vanno direttamente nella classe auto?
Potete suggerirmi un piccolo progetto di esempio da poter studiare? Preferirei averlo con ADO.NET e webforms.
Grazie
11.097 messaggi dal 09 febbraio 2002
Contributi
Ciao,
vedi se trovi qualcosa qui:
https://www.asp.net/aspnet/samples/aspnet-web-forms


La prima domanda che mi pongo è: i vari metodi vanno direttamente nella classe auto?

Potresti farlo anche se nel caso di WebForms + CRUD con ADO.NET personalmente preferisco creare un servizio chiamato AutoRepository. Questo servizio contiene i metodi CRUD come Create che accetterà un oggetto Auto che poi persisti con ADO.NET.

ciao,
Moreno

Enjoy learning and just keep making
66 messaggi dal 12 febbraio 2016
Ciao Moreno,
grazie come sempre.
Dal link che mi hai condiviso non ho trovato nulla ma girando su internet ho trovato questo:
http://www.csharpdocs.com/how-to-create-sql-data-access-layer-in-c-using-ado-net-part-2/

Certo, guardando un po il codice mi viene un dubbio:
c'è un metodo Insert che effettua il command.ExecuteScalar(); vedo che viene aperta la connessione al db ma non trovo l'istruzione Close() della stessa. Puoi darci uno sguardo?


public int Insert(string commandText, CommandType commandType, SqlParameter[] parameters, out int lastId)
        {
            lastId = 0;
            using (var connection = new SqlConnection(ConnectionString))
            {
                connection.Open();

                using (var command = new SqlCommand(commandText, connection))
                {
                    command.CommandType = commandType;
                    if (parameters != null)
                    {
                        foreach (var parameter in parameters)
                        {
                            command.Parameters.Add(parameter);
                        }
                    }

                    object newId = command.ExecuteScalar();
                    lastId = Convert.ToInt32(newId);
                }
            }

            return lastId;
        }
11.097 messaggi dal 09 febbraio 2002
Contributi
Ciao,
invocare il metodo Close non è necessario perché viene eseguito implicitamente quando si invoca il metodo Dispose. E il metodo Dispose è invocato dal blocco using. In questo modo la connessione viene chiusa e distrutta correttamente anche se dovesse verificarsi un'eccezione.

Leggi qui a proposito del blocco using. E' molto importante da usare con tutti gli oggetti che implementano l'interfaccia IDisposable come l'oggetto connection, command e così via.
https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/using-objects

ciao,
Moreno
Modificato da BrightSoul il 23 novembre 2018 13.32 -

Enjoy learning and just keep making
66 messaggi dal 12 febbraio 2016
D'accordo,
ti ringrazio!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.