gost 390446
Iskusan
- Poruka
- 5.726
1. DEO
Posto se cesto postavljaju razna pitanja oko toga kako upisati nesto u bazu podataka, kako ovo, kako ono, rekoh da podelim ovde jedan generalni primer dobre prakse kako implementirati DA layer.
Ovde cu dati primer za dve vreste baze podataka (MS SQL, i Firebird), a videcete kako dalje vrlo lako sami mozete da implementirate za bilo koju drugu bazu podataka (jednostavnim nasledjivanjem).
Pa, da pocnemo:
1. Kreirajte interfejs, gde cete opisati neophodne funkcije.
2. Kreirajte interfejs za vas database Scope, koji ce biti nista drugo do implementacija IDisposable interfejsa.
3. Implementirajte interfejs IUpdatesScope, za dve navedene baze podataka:
- MS SQL:
- Firebird db:
Napomena: ne zaboravite da dodate using klauzule za sve sto ce vam trebati, i adekvatne reference.
Posto se cesto postavljaju razna pitanja oko toga kako upisati nesto u bazu podataka, kako ovo, kako ono, rekoh da podelim ovde jedan generalni primer dobre prakse kako implementirati DA layer.
Ovde cu dati primer za dve vreste baze podataka (MS SQL, i Firebird), a videcete kako dalje vrlo lako sami mozete da implementirate za bilo koju drugu bazu podataka (jednostavnim nasledjivanjem).
Pa, da pocnemo:
1. Kreirajte interfejs, gde cete opisati neophodne funkcije.
Kod:
public interface IUpdatesDA
{
IUpdatesScope GetScope();
bool Login(IUpdatesScope updatesScope, string userName, string password, out AccountData accountData, out Guid sessionGuid);
bool SelectSomething(IUpdatesScope, Guid sessionGuid, int someID, out MyDatabaseData myDatabaseData);
bool InsertSomething(IUpdatesScope updatesScope, Guid sessionGuid, DataToInsert dataToInsert);
}
2. Kreirajte interfejs za vas database Scope, koji ce biti nista drugo do implementacija IDisposable interfejsa.
Kod:
public interface IUpdatesScope : IDisposable
{
}
3. Implementirajte interfejs IUpdatesScope, za dve navedene baze podataka:
- MS SQL:
Kod:
public class MSSqlUpdatesScope : IUpdatesScope
{
public MSSqlUpdatesScope(string connectionString)
{
Connection = new SqlConnection(connectionString);
Connection.Open();
}
~MSSqlUpdatesScope()
{
Dispose(false);
}
public SqlConnection Connection { get; internal set; }
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposing)
return;
if (Connection == null)
return;
Connection.Dispose();
Connection = null;
}
}
- Firebird db:
Kod:
public class FirebirdUpdatesScope : IUpdatesScope
{
public FbConnection Connection { get; internal set; }
public FirebirdUpdatesScope(string connectionString)
{
Connection = new FbConnection(connectionString);
Connection.Open();
}
~FirebirdUpdatesScope()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
// The bulk of the clean-up code is implemented in Dispose(bool)
protected virtual void Dispose(bool disposing)
{
if (!disposing)
return;
if (Connection == null)
return;
Connection.Dispose();
Connection = null;
}
}
Napomena: ne zaboravite da dodate using klauzule za sve sto ce vam trebati, i adekvatne reference.
Poslednja izmena: