AssociationSetMapping を使用したアプリケーション コード (Entity Framework)
このセクションのアプリケーション コードでは、アソシエーションのインスタンスを追加または削除するストアド プロシージャが Entity Framework でどのように使用されるかを示します。この例で使用するオブジェクト モデルとストアド プロシージャについては、「ストアド プロシージャへのアソシエーション セットのマッピング (Entity Framework)」を参照してください。
2 つの基本的なコード シーケンスを使用して、既存のエンティティ間のアソシエーションを追加および削除します。
エンティティの NavigationProperty で指定された EntityCollection に対して
Add
を呼び出し、関連オブジェクトを指定します。これは一対多および多対多のアソシエーションに有効です。EntityReference の
Value
プロパティを関連オブジェクトに設定します。これは一対一および多対一のアソシエーションに有効です。
次のコードでは、Add
メソッドを使用して、Contact エンティティと Address エンティティの間に新しいアソシエーションを作成します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ContactInformationModel;
namespace ContactAddressModFunc
{
class Program
{
static void Main(string[] args)
{
using (ContactInformationEntities objCtx =
new ContactInformationEntities())
{
for (int i = 1; i < 11; i++)
{
Contact contact = new Contact();
contact.ContactID = i;
contact.FirstName = "Contact " + i.ToString();
contact.LastName = "LastName " + i.ToString();
Address address = new Address();
address.AddressID = i;
address.StreetAddress = "Street Address " +
i.ToString();
address.City = "Seattle";
objCtx.AddToContacts(contact);
objCtx.AddToAddresses(address);
contact.Address.Add(address);
address.Contact.Add(contact);
}
objCtx.SaveChanges();
foreach (Contact contact in objCtx.Contacts)
{
Console.WriteLine(contact.LastName);
contact.Address.Load();
foreach (Address address in contact.Address)
Console.WriteLine(address.StreetAddress);
}
}
}
}
}
参照
処理手順
オブジェクト間のリレーションシップを変更する方法 (Entity Framework)
概念
ストアド プロシージャのサポート (Entity Framework)
オブジェクトの追加、変更、および削除 (Entity Framework)