Dela via


Så här gör du: Anslut till en databas

DataContext är huvudkanalen som du ansluter till en databas med, hämtar objekt från den och skickar tillbaka ändringar till den. Du använder precis som DataContext du skulle använda en ADO.NET SqlConnection. I själva verket DataContext initieras med en anslutning eller anslutningssträng som du anger. Mer information finns i DataContext Methods (O/R Designer).

Syftet med DataContext är att översätta dina begäranden om objekt till SQL-frågor som ska göras mot databasen och sedan montera objekt ur resultatet. Aktiverar DataContext Språkintegrerad fråga (LINQ) genom att implementera samma operatormönster som Standard Query Operators, till exempel Where och Select.

Viktigt!

Det är av största vikt att upprätthålla en säker anslutning. Mer information finns i Säkerhet i LINQ till SQL.

Exempel 1

I följande exempel DataContext används för att ansluta till Northwind-exempeldatabasen och för att hämta rader med kunder vars stad är London.

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

Varje databastabell representeras som en Table samling som är tillgänglig via GetTable metoden genom att använda entitetsklassen för att identifiera den.

Exempel 2

Bästa praxis är att deklarera ett starkt skrivet DataContext i stället för att förlita sig på den grundläggande DataContext klassen och GetTable metoden. En starkt skriven DataContext deklarerar alla Table samlingar som medlemmar i kontexten, som i följande exempel.

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

Du kan sedan uttrycka frågan för kunder från London mer enkelt som:

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

Se även