Postupy: Připojení k databázi
Jedná se DataContext o hlavní konduit, kterým se připojujete k databázi, načítáte z ní objekty a odešlete změny zpět do databáze. Použijete ADO.NET DataContext stejně, jako byste použili ADO.NET SqlConnection. Ve skutečnosti DataContext se inicializuje pomocí připojení nebo připojovací řetězec, které zadáte. Další informace naleznete v tématu Metody DataContext (Návrhář relací objektů).
Účelem je DataContext přeložit vaše požadavky na objekty do dotazů SQL, které se mají provést v databázi, a pak sestavit objekty z výsledků. Umožňuje DataContext jazykově integrovaný dotaz (LINQ) implementací stejného vzoru operátoru jako standardní operátor operátory, například Where
a Select
.
Důležité
Udržování zabezpečeného připojení má nejvyšší důležitost. Další informace naleznete v tématu Zabezpečení v LINQ to SQL.
Příklad 1
V následujícím příkladu DataContext se používá k připojení k ukázkové databázi Northwind a k načtení řádků zákazníků, jejichž město je Londýn.
// DataContext takes a connection string.
DataContext db = new DataContext(@"c:\Northwind.mdf");
// Get a typed table to run queries.
Table<Customer> Customers = db.GetTable<Customer>();
// Query for customers from London.
var query =
from cust in Customers
where cust.City == "London"
select cust;
foreach (var cust in query)
Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);
' DataContext takes a connection string.
Dim db As New DataContext("…\Northwind.mdf")
' Get a typed table to run queries.
Dim Customers As Table(Of Customer) = db.GetTable(Of Customer)()
' Query for customer from London.
Dim Query = _
From cust In Customers _
Where cust.City = "London" _
Select cust
For Each cust In Query
Console.WriteLine("id=" & cust.CustomerID & _
", City=" & cust.City)
Next
Každá tabulka databáze je reprezentována jako Table
kolekce dostupná metodou GetTable pomocí třídy entity k identifikaci.
Příklad 2
Osvědčeným postupem je deklarovat silné typy DataContext místo spoléhání na základní DataContext třídu a metodu GetTable . Silné typy DataContext deklarují všechny Table
kolekce jako členy kontextu, jako v následujícím příkladu.
public partial class Northwind : DataContext
{
public Table<Customer> Customers;
public Table<Order> Orders;
public Northwind(string connection) : base(connection) { }
}
Partial Public Class Northwind
Inherits DataContext
Public Customers As Table(Of Customer)
Public Orders As Table(Of Order)
Public Sub New(ByVal connection As String)
MyBase.New(connection)
End Sub
End Class
Dotaz pro zákazníky z Londýna pak můžete vyjádřit jednoduše takto:
Northwnd db = new Northwnd(@"c:\Northwnd.mdf");
var query =
from cust in db.Customers
where cust.City == "London"
select cust;
foreach (var cust in query)
Console.WriteLine("id = {0}, City = {1}", cust.CustomerID,
cust.City);
Dim db As New Northwind("...\Northwnd.mdf")
Dim query = _
From cust In db.Customers _
Where cust.City = "London" _
Select cust
For Each cust In query
Console.WriteLine("id=" & cust.CustomerID & _
", City=" & cust.City)
Next