Postupy: Aktualizace řádků v databázi
Řádky v databázi můžete aktualizovat úpravou hodnot členů objektů přidružených ke kolekci LINQ to SQL Table<TEntity> a následným odesláním změn do databáze. LINQ to SQL přeloží změny do příslušných příkazů SQL UPDATE
.
Poznámka:
Můžete přepsat výchozí metody LINQ to SQL pro Insert
Update
, a Delete
databázové operace. Další informace naleznete v tématu Přizpůsobení operací vložení, aktualizace a odstranění.
Vývojáři používající Sadu Visual Studio můžou použít Návrhář relací objektů k vývoji uložených procedur pro stejný účel.
Následující kroky předpokládají, že vás platný DataContext připojí k databázi Northwind. Další informace naleznete v tématu Postupy: Připojení do databáze.
Aktualizace řádku v databázi
Zadejte dotaz na databázi, aby se řádek aktualizoval.
Proveďte požadované změny hodnot členů ve výsledném objektu LINQ to SQL.
Odešlete změny do databáze.
Příklad
Následující příklad dotazuje databázi na objednávku #11000 a pak změní hodnoty výsledného ShipName
objektu a ShipVia
v tomto objektu Order
. Nakonec se změny těchto hodnot členů odesílají do databáze jako změny v polích ShipName
a ShipVia
sloupcích.
// Query the database for the row to be updated.
var query =
from ord in db.Orders
where ord.OrderID == 11000
select ord;
// Execute the query, and change the column values
// you want to change.
foreach (Order ord in query)
{
ord.ShipName = "Mariner";
ord.ShipVia = 2;
// Insert any additional changes to column values.
}
// Submit the changes to the database.
try
{
db.SubmitChanges();
}
catch (Exception e)
{
Console.WriteLine(e);
// Provide for exceptions.
}
' Query the database for the row to be updated.
Dim ordQuery = _
From ord In db.Orders _
Where ord.OrderID = 11000 _
Select ord
' Execute the query, and change the column values
' you want to change.
For Each ord As Order In ordQuery
ord.ShipName = "Mariner"
ord.ShipVia = 2
' Insert any additional changes to column values.
Next
' Submit the changes to the database.
Try
db.SubmitChanges()
Catch e As Exception
Console.WriteLine(e)
' Make some adjustments.
' ...
' Try again
db.SubmitChanges()
End Try