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/)