Megosztás a következőn keresztül:


A LINQ és az SQL használata

Az SQL-hez való LINQ minden olyan kulcsfontosságú képességet támogat, amely sql-fejlesztőként elvárható. Adatokat kérdezhet le, és adatokat szúrhat be, frissíthet és törölhet a táblákból.

Kiválasztása

A kiválasztás (előrejelzés) úgy érhető el, hogy csak egy LINQ-lekérdezést ír a saját programozási nyelvére, majd végrehajtja a lekérdezést az eredmények lekéréséhez. Maga a LINQ és az SQL lefordítja az összes szükséges műveletet a szükséges, ön által ismert SQL-műveletekre. További információ: LINQ–SQL.

Az alábbi példában a londoni ügyfelek cégneveit a rendszer lekéri és megjeleníti a konzolablakban.

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

Behelyezése

SQL Insertvégrehajtásához egyszerűen adjon hozzá objektumokat a létrehozott objektummodellhez, és hívja SubmitChanges meg a DataContext.

Az alábbi példában egy új ügyfél és az ügyfél adatai lesznek hozzáadva a táblához a Customers használatával 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()

Frissítés

Adatbázis-bejegyzéshez Update először kérje le az elemet, és szerkessze közvetlenül az objektummodellben. Miután módosította az objektumot, hívja meg SubmitChanges az DataContext adatbázis frissítését.

Az alábbi példában a rendszer minden, Londonból származó ügyfelet lekér. Ezután a város neve "London" -ról "London - Metro" -ra változik. SubmitChanges Végül a rendszer meghívja, hogy küldje el a módosításokat az adatbázisba.

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

Törlés

Egy elemhez Delete távolítsa el az elemet abból a gyűjteményből, amelyhez tartozik, majd hívja meg SubmitChanges a DataContext módosítás véglegesítését.

Feljegyzés

A LINQ–SQL nem ismeri fel a kaszkádolt törlési műveleteket. Ha olyan táblát szeretne törölni, amely korlátozásokkal rendelkezik, olvassa el a Hogyan: Sorok törlése az adatbázisból című témakört.

Az alábbi példában a rendszer az adatbázisból kéri le az ügyfelet CustomerID 98128 . Ezután az ügyfélsor lekérésének DeleteOnSubmit megerősítése után a rendszer meghívja, hogy távolítsa el az objektumot a gyűjteményből. SubmitChanges Végül a törlést az adatbázisba kell továbbítani.

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

Lásd még