programarea in .NET – partea a 3-a – codul pentru obiecte

Ar fi folositor sa cititi partea 1 si partea a 2-a


Acum la creearea obiectelor


Fiecare obiect trebuie sa aiba proprietati care corespund cimpurilor din Baza de date si , pentru usurinta, alte proprietati/metode


O sa scriu codul pentru Publisher si o sa las pe celelalte ca un exercitiu pentru dvoastra. Pentru a salva/sterge/creea un obiect de tip Publisher o sa implementam corespondentele metode corresponding method update / delete / insert.


Faptul ca un publisher trebuie sa aiba un nume unic o sa il scriem mai tirziu.


Stim deja ca trebuie sa avem doua baze de date, asa incit o sa avem doua stringuri de conexiune -pentru Access si pentru SQL Server)


Pentru a usura scrierea stringurilor de conexiune, va rog sa consultati www.connectionstrings.com




PEntru a vedea toate inregistrarile din tabela publisher, trebuie sa stocam undeva multimea lor. Aceasta multime va fi o clasa numita ColPublisher. Ea va contine o metoda numita Load care va incarca Publisher-ul din baza de date si le va stoca intr-o colectie.



Acum , cind stim ce avem de facut in continuare, hai sa scriem ceva cod


Start Visual C# Express( daca e prima oara cind il lansati, va va intreba setarile -puneti pe cele de C#)si creati un nou proiect numit Books



si salvati in C:\book





De obicei, the System.Data.dll este listat in referinte. Daca nu, va rog sa il adaugati. Oricum, adaugati va rog si o referinta la System.Configuration.


Click dreapta pe Solution Explorer si Add reference laOleDBConnection ca mai jos :





Redenumiti Class1.cs dinproprietati( click pe fisier in Solution Explorer si apasati F4) in Publisher.cs


Daca raspundeti “yes” la urmatoarea intrebare, numele clasei va fi schimbat din Class1 in Publisher – si faceti-o public class



Acum o sa scriem proprietatile de baza pentru un Publisher :


using System;


using System.Collections.Generic;


using System.Text;



namespace BookObjects


{


public class Publisher


{


#region Database properties


private int m_IDPublisher;


public int IDPublisher


{


get


{


return m_IDPublisher;


}


set


{


m_IDPublisher = value;


}


}



private string m_Name;



public string Name


{


get


{


return m_Name;


}


set


{


m_Name = value;


}


}



private string m_Site;



public string Site


{


get


{


return m_Site;


}


set


{


m_Site = value;


}


}


#endregion



}


}




Trebuie sa le incarcam aceste proprietati din Baza de date, asa incit o sa scriem o metoda Fill:


O sa o scriem astfel incit sa nu avem dependenta de BD:




#region Database methods


public void FillObject(System.Data.IDataReader idr)


{


this.Name = idr[“NamePublisher”].ToString();


this.Site = idr[“SitePublisher”].ToString();


}


#endregion





ACum va trebui sa scriem codul de incarcare din BD a diverselor inregistrari. Asaugati o noua clasa ( Project => Add Class) si denumiti-o ColPublisher.cs.


Din nou , faceti-o public class si haide sa scriem metoda care incarca datele din BD.



public void Load()


{



}


ACum ne dam seama ca ne trebuie cele doua conexiuni – si o metoda de a vedea pe care din ele le incarcam.


Asa incit vom incepe sa scriem cod spre a incarca conexiunile :


public static string ConnectionStringMDB


{


get


{


return System.Configuration.ConfigurationManager.ConnectionStrings[“MDB”];


}


}


public static string ConnectionStringSQLServer


{


get


{


return System.Configuration.ConfigurationManager.ConnectionStrings[“SQLServer”];


}


}




Asa cum am tot spus, avem doua stringuri de conexiune.


A venit timpul sa stim cind incarcam una si cind cealalta in functia Load.


O sa adaug o noua clasa numita Settings si o sa pun acolo setarile comune


O sa adaug o enumerare care o sa imi spuna ce baza de date voi utiliza



public enum DatabaseUsed


{


None,


MDB,


SQLServer


}


si o sa o citim din fisierul de configurare(App.config sau Web.Config) :


public static DatabaseUsed TheDatabase


{


get


{


return Enum.Parse(typeof(DatabaseUsed), System.Configuration.ConfigurationManager.AppSettings[“DatabaseUsed”];


}


}



Puteti obserava ca am pus configurarea in Appsetting . Putem stoca si stringurile de conexiune in acelasi loc – dar am vrut sa fim compatibili cu standardul Microsoft.


Codul poate fi obtinut de aici


Data viitoare o sa scriem cod pentru a incarca datele din BD si a le pune in colectie.



De citit:


Pentru .NET best practices, puteti citi http://www.ssw.com.au/ssw/Standards/default.aspx


PEntru construirea unui ORM (Object-relational_mapping) cum facem aici, cititi articolul urmator de pe Wikipedia (http://en.wikipedia.org/wiki/Object-relational_mapping) si puteti gasi o lista de ORM la adresa http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software . Cred ca ar trebui sa cititi cel putin unul, de exemplu Nhibernate : http://www.hibernate.org/343.html


Pentru a genera acelasi cod plecind de la tabele dintr-o baza de date, cititi Code Generation (http://en.wikipedia.org/wiki/Code_generation) si poate CodeSmith (http://www.codesmithtools.com/)









Leave a Reply

Your email address will not be published. Required fields are marked *