Wat u kunt doen met LINQ naar SQL

LINQ naar SQL ondersteunt alle belangrijke mogelijkheden die u als SQL-ontwikkelaar zou verwachten. U kunt gegevens opvragen en gegevens invoegen, bijwerken en verwijderen uit tabellen.

Selecteren

Selecteren (projectie) wordt bereikt door alleen een LINQ-query in uw eigen programmeertaal te schrijven en vervolgens die query uit te voeren om de resultaten op te halen. LINQ naar SQL zelf vertaalt alle benodigde bewerkingen in de benodigde SQL-bewerkingen waarmee u bekend bent. Zie LINQ naar SQL voor meer informatie.

In het volgende voorbeeld worden de bedrijfsnamen van klanten uit Londen opgehaald en weergegeven in het consolevenster.

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

Invoegen

Als u een SQL Insertwilt uitvoeren, voegt u alleen objecten toe aan het objectmodel dat u hebt gemaakt en roept SubmitChanges u het DataContextaan.

In het volgende voorbeeld worden een nieuwe klant en informatie over de klant aan de Customers tabel toegevoegd met behulp van InsertOnSubmit.

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

Bijwerken

Voor Update een databasevermelding haalt u eerst het item op en bewerkt u het rechtstreeks in het objectmodel. Nadat u het object hebt gewijzigd, roept SubmitChanges u de DataContext database aan om de database bij te werken.

In het volgende voorbeeld worden alle klanten uit Londen opgehaald. Dan wordt de naam van de stad gewijzigd van "Londen" in "Londen - Metro". SubmitChanges Ten slotte wordt aangeroepen om de wijzigingen naar de database te verzenden.

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()

Verwijderen

Als u een item wilt Delete , verwijdert u het item uit de verzameling waartoe het behoort en roept SubmitChangesDataContext u de wijziging vervolgens aan om de wijziging door te voeren.

Notitie

LINQ naar SQL herkent trapsgewijze verwijderingsbewerkingen niet. Als u een rij in een tabel met beperkingen wilt verwijderen, raadpleegt u Instructies: Rijen uit de database verwijderen.

In het volgende voorbeeld wordt de klant opgehaald CustomerID98128 uit de database. Vervolgens wordt, nadat u hebt bevestigd dat de rij van de klant is opgehaald, DeleteOnSubmit aangeroepen om dat object uit de verzameling te verwijderen. Ten slotte SubmitChanges wordt aangeroepen om de verwijdering door te sturen naar de database.

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

Zie ook