オブジェクトを追加、変更、および削除する方法 (Entity Framework)
このトピックでは、Object Services を使用し、オブジェクト コンテキストでオブジェクトを変更して、そのデータをデータベースに保存する例を紹介します。このトピックの例には、Adventure Works Sales Model が使用されています。この例のコードを実行するには、あらかじめプロジェクトに AdventureWorks Sales Model を追加し、Entity Framework を使用するようにプロジェクトを構成しておく必要があります。具体的な方法については、「Entity Framework プロジェクトを手動で構成する方法」および「Entity Data Model を手動で定義する方法 (Entity Framework)」の手順を参照してください。
例
この例では、オブジェクト クエリから、指定した SalesOrderID に基づく単一の SalesOrderHeader オブジェクトが返されます。この注文のステータスは 5 (出荷済み) から 1 (処理中) に変更され、新しいアイテムが注文に追加されて、最初の既存のアイテムが削除されます。変更をデータベースに書き込むために、SaveChanges メソッドが呼び出されます。その後、最終的な注文の状態がコンソールに出力されます。
' Specify the order to update.
Dim orderId As Integer = 43680
Using context As New AdventureWorksEntities()
Try
Dim order As SalesOrderHeader = _
context.SalesOrderHeader.Where( _
"it.SalesOrderID = @id", New ObjectParameter( _
"id", orderId)).First()
' Change the status and ship date of an existing order.
order.Status = 1
order.ShipDate = DateAndTime.Today
' Load items for the order, if not already loaded.
If Not order.SalesOrderDetail.IsLoaded Then
order.SalesOrderDetail.Load()
End If
' Delete the first item in the order.
context.DeleteObject(order.SalesOrderDetail.First())
' Create a new item using the static Create method
' and add it to the order.
order.SalesOrderDetail.Add( _
SalesOrderDetail.CreateSalesOrderDetail( _
1, 0, 2, 750, 1, CDec(2171.2942), 0, 0, Guid.NewGuid(), _
DateAndTime.Today))
' Save changes in the object context to the database.
Dim changes As Integer = context.SaveChanges()
Console.WriteLine(changes.ToString() + " changes saved!")
Console.WriteLine("Updated item for order: " _
+ order.SalesOrderID.ToString())
Dim item As SalesOrderDetail
For Each item In order.SalesOrderDetail
Console.WriteLine("Item ID: " _
+ item.SalesOrderDetailID.ToString() + " Product: " _
+ item.ProductID.ToString() + " Quantity: " + item.OrderQty.ToString())
Next
Catch ex As UpdateException
Console.WriteLine(ex.ToString())
End Try
End Using
// Specify the order to update.
int orderId = 43680;
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
try
{
SalesOrderHeader order =
context.SalesOrderHeader.Where
("it.SalesOrderID = @id", new ObjectParameter(
"id", orderId)).First();
// Change the status and ship date of an existing order.
order.Status = 1;
order.ShipDate = DateTime.Today;
// Load items for the order, if not already loaded.
if (!order.SalesOrderDetail.IsLoaded)
{
order.SalesOrderDetail.Load();
}
// Delete the first item in the order.
context.DeleteObject(order.SalesOrderDetail.First());
// Create a new item using the static Create method
// and add it to the order.
order.SalesOrderDetail.Add(
SalesOrderDetail.CreateSalesOrderDetail(0,
0, 2, 750, 1, (decimal)2171.2942, 0, 0,
Guid.NewGuid(), DateTime.Today));
// Save changes in the object context to the database.
int changes = context.SaveChanges();
Console.WriteLine(changes.ToString() + " changes saved!");
Console.WriteLine("Updated item for order: "
+ order.SalesOrderID.ToString());
foreach (SalesOrderDetail item in order.SalesOrderDetail)
{
Console.WriteLine("Item ID: "
+ item.SalesOrderDetailID.ToString() + " Product: "
+ item.ProductID.ToString() + " Quantity: "
+ item.OrderQty.ToString());
}
}
catch (UpdateException ex)
{
Console.WriteLine(ex.ToString());
}
}
参照
概念
オブジェクトの追加、変更、および削除 (Entity Framework)
Object Services の概要 (Entity Framework)