Dela via


Vad du kan göra med LINQ till SQL

LINQ till SQL har stöd för alla viktiga funktioner som du kan förvänta dig som SQL-utvecklare. Du kan fråga efter information och infoga, uppdatera och ta bort information från tabeller.

Välja

Du väljer (projektion) genom att bara skriva en LINQ-fråga på ditt eget programmeringsspråk och sedan köra frågan för att hämta resultatet. LINQ till SQL översätter alla nödvändiga åtgärder till nödvändiga SQL-åtgärder som du är bekant med. Mer information finns i LINQ till SQL.

I följande exempel hämtas företagsnamnen för kunder från London och visas i konsolfönstret.

// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");
// or, if you are not using SQL Server Express
// Northwnd nw = new Northwnd("Database=Northwind;Server=server_name;Integrated Security=SSPI");

var companyNameQuery =
    from cust in nw.Customers
    where cust.City == "London"
    select cust.CompanyName;

foreach (var customer in companyNameQuery)
{
    Console.WriteLine(customer);
}
' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")
' or, if you are not using SQL Server Express
' Dim nw As New Northwnd("Database=Northwind;Server=dschwart7;Integrated Security=SSPI")

Dim companyNameQuery = _
    From cust In nw.Customers _
    Where cust.City = "London" _
    Select cust.CompanyName

For Each customer In companyNameQuery
    Console.WriteLine(customer)
Next

Infoga

Om du vill köra en SQL Insertlägger du bara till objekt i den objektmodell som du har skapat och anropar SubmitChangesDataContext.

I följande exempel läggs en ny kund och information om kunden till i Customers tabellen med hjälp InsertOnSubmitav .

// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");

Customer cust = new Customer();
cust.CompanyName = "SomeCompany";
cust.City = "London";
cust.CustomerID = "98128";
cust.PostalCode = "55555";
cust.Phone = "555-555-5555";
nw.Customers.InsertOnSubmit(cust);

// At this point, the new Customer object is added in the object model.
// In LINQ to SQL, the change is not sent to the database until
// SubmitChanges is called.
nw.SubmitChanges();
' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")

Dim cust As New Customer With {.CompanyName = "SomeCompany", _
    .City = "London", _
    .CustomerID = 98128, _
    .PostalCode = 55555, .Phone = "555-555-5555"}
nw.Customers.InsertOnSubmit(cust)
' At this point, the new Customer object is added in the object model.
' In LINQ to SQL, the change is not sent to the database until
' SubmitChanges is called.
nw.SubmitChanges()

Uppdatera

Till Update en databaspost hämtar du först objektet och redigerar det direkt i objektmodellen. När du har ändrat objektet anropar SubmitChanges DataContext du för att uppdatera databasen.

I följande exempel hämtas alla kunder som kommer från London. Sedan ändras namnet på staden från "London" till "London - Metro". Slutligen SubmitChanges anropas för att skicka ändringarna till databasen.

Northwnd nw = new Northwnd(@"northwnd.mdf");

var cityNameQuery =
    from cust in nw.Customers
    where cust.City.Contains("London")
    select cust;

foreach (var customer in cityNameQuery)
{
    if (customer.City == "London")
    {
        customer.City = "London - Metro";
    }
}
nw.SubmitChanges();
Dim nw As New Northwnd("c:\northwnd.mdf")
Dim cityNameQuery = _
    From cust In nw.Customers _
    Where cust.City.Contains("London") _
    Select cust

For Each customer In cityNameQuery
    If customer.City = "London" Then
        customer.City = "London - Metro"
    End If
Next
nw.SubmitChanges()

Tas bort

Till Delete ett objekt tar du bort objektet från samlingen som det tillhör och anropar SubmitChanges DataContext sedan för att genomföra ändringen.

Kommentar

LINQ till SQL känner inte igen åtgärder för kaskadborttagning. Om du vill ta bort en rad i en tabell som har begränsningar mot den kan du läsa Så här tar du bort rader från databasen.

I följande exempel hämtas kunden som har CustomerID av 98128 från databasen. När du har bekräftat att kundraden har hämtats anropas DeleteOnSubmit du för att ta bort objektet från samlingen. Slutligen SubmitChanges anropas för att vidarebefordra borttagningen till databasen.

Northwnd nw = new Northwnd(@"northwnd.mdf");
var deleteIndivCust =
    from cust in nw.Customers
    where cust.CustomerID == "98128"
    select cust;

if (deleteIndivCust.Count() > 0)
{
    nw.Customers.DeleteOnSubmit(deleteIndivCust.First());
    nw.SubmitChanges();
}
Dim nw As New Northwnd("c:\northwnd.mdf")
Dim deleteIndivCust = _
    From cust In nw.Customers _
    Where cust.CustomerID = 98128 _
    Select cust

If deleteIndivCust.Count > 0 Then
    nw.Customers.DeleteOnSubmit(deleteIndivCust.First)
    nw.SubmitChanges()
End If

Se även