Linq la sql, clasa datacontext

»» IN ACEST ARTICOLUL ESTE UTILIZAT CODUL SURSELOR PENTRU EXEMPLE

Clasa DataContext gestionează conexiunea la baza de date. De asemenea, procesează interogări, actualizări, inserări în baza de date, monitorizează identitatea, urmărește modificările, le procesează, asigură integritatea tranzacțiilor și chiar creează o bază de date. Clasa DataContext traduce interogările pentru clasele intrinseci în instrucțiunile SQL care sunt executate în baza de date conectată.







Derivat din clasa DataContext [dvs.] DataContext oferă acces la întregul grup de tehnici de baze de date, cum ar fi executeQuery, ExecuteCommand și SubmitChanges. În plus față de aceste metode moștenite, clasa [Your] DataContext va conține proprietăți de tip System.Data.Linq.Table pentru fiecare tabel și vizualizare din baza de date de la care se va utiliza LINQ la SQL, unde fiecare tip de T este o clasă de entitate mapată la un anumit tabel sau vizualizare.

De exemplu, uitați-vă la clasa Northwind care a fost generată de instrumentul SQLMetal. Aceasta este clasa [dvs.] DataContext pentru baza de date Northwind. Mai jos este cea mai notabilă parte a acestei clase:

După cum puteți vedea, această clasă este într-adevăr moștenită de la DataContext.

Este ușor de văzut că cinci designeri sunt declarați în el. Rețineți că constructorul implicit este privat (privat), deoarece modificatorul de acces necunoscut la el, astfel încât să creeze o instanță [ta] DataContext fără parametri de nu va funcționa. Fiecare dintre constructori publice [ta] DataContext corespunde unuia dintre designerii si DataContext constructorul clasei este echivalent în initializare sa DataContext. În corpul constructorilor, se invocă numai metoda parțială OnCreated. Aceasta permite dezvoltatorului să implementeze o metodă parțială OnCreated, care se numește de fiecare dată când este creat obiectul [Your] DataContext.







În plus, clasa Northwind are o proprietate numită Clienți de tipul Tabel, în cazul în care tipul de client reprezintă o clasă a entității. Această clasă de clienți esențiali este mapată în tabelul Clienți din baza de date Northwind.

De fapt, nu trebuie să scrieți cod care utilizează clasa [Your] DataContext. Este foarte posibil să lucrați cu clasa standard de dateContext. Totuși, folosirea clasei [Your] DataContext face ca scrierea restului codului să fie mai convenabilă. De exemplu, dacă utilizați clasa [Your] DataContext, fiecare tabel este reprezentat de o proprietate care este accesibilă direct prin obiectul [Your] DataContext. Un exemplu este prezentat mai jos:

În codul anterior, deoarece vă conectați utilizând clasa [Your] DataContext numită Northwind, puteți accesa tabelul Table of Customers în ceea ce privește proprietatea Clienților din clasa dvs. de DateContext. Iată rezultatul acestui cod:

Linq la sql, clasa datacontext

Dacă, în schimb, conexiunea a fost făcută utilizând clasa DataContext în sine, va trebui să utilizați metoda GetTable obiectul DataContext așa cum se arată în exemplul de mai jos:

Acest cod dă același rezultat.

Deci, folosirea clasei [Your] DataContext este doar mai convenabilă și merită folosită.

Clasa DataContext implementează interfața IDisposable

Clasa DataContext implementează interfața IDisposable și, prin urmare, trebuie tratată corect ca un obiect disposabe. Acest lucru înseamnă că, dacă creați o nouă clasă, care conține în sine DataContext de clasă sau [ta] DataContext, ceea ce înseamnă că raportul dintre „o“ (a-a) între noua clasă și DataContext de clasă sau [ta] DataContext, atunci noua clasă, de asemenea, trebuie să pună în aplicare interfața IDisposable. Problemele legate de design-ul de clasă pentru implementarea corectă a interfeței IDisposibile nu sunt în sfera de aplicare a acestui articol, dar există multe resurse online dedicate acestui subiect.

Un alt avantaj al implementării interfeței IDisposable cu clasa DataContext este că puteți utiliza acum operatorul care utilizează pentru a controla obiectul DataContext sau [Your] DataContext.







Articole similare

Trimiteți-le prietenilor: