方法: データベースの行を更新する
LINQ to SQL の Table<TEntity> コレクションに関連付けられたオブジェクトのメンバーの値を変更し、その変更内容をデータベースに送信することで、データベースの行を更新できます。 LINQ to SQL によって、変更内容が適切な SQL の UPDATE
コマンドに変換されます。
Note
LINQ to SQL の Insert
、Update
、および Delete
の既定のデータベース操作メソッドはオーバーライドできます。 詳細については、「挿入、更新、および削除の各操作のカスタマイズ」を参照してください。
Visual Studio を使用している開発者は、オブジェクト リレーショナル デザイナーを使用して、同じ用途のストアド プロシージャを開発できます。
以下の手順では、有効な DataContext で Northwind データベースに接続されるものと想定しています。 詳細については、データベースに接続する」を参照してください。
データベースの行を更新するには
データベースで更新する行をクエリします。
結果として得られた LINQ to SQL オブジェクトのメンバー値に、必要な変更を加えます。
データベースに変更内容を送信します。
例
次の例では、データベースの注文 #11000 をクエリし、結果として得られた ShipName
オブジェクトの ShipVia
と Order
の値を変更します。 次に、これらのメンバー値の変更内容を、ShipName
列と ShipVia
列に対する変更としてデータベースに送信します。
// 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