VisualStudio2012を使用してEntityFramerwork4.1 /MVC3をEntityFramework5.0 /MVC4に更新しています。データベースはSQLServer2005です。以下は、データベーステーブルとそれらの関係のイメージです。各テーブルには主キーがあります。補助テーブルの主キーはIdentityです。テーブルはFormIdによって関連付けられています。
データベースから更新すると、EFはテーブルとその関係をインポートします。
EF 4.1を使用すると、1回のSaveChanges()呼び出しで、4つのテーブルすべてに正常に保存(挿入)される次のコードを記述できました。プログラムで新しいGUIDを作成し、他の3つのテーブルにnsFormを追加しました。SaveChanges()が実行されると、EF 4は最初にNSFormを保存し、他の3つのテーブルをそれぞれ保存するときにFormIdを自動的に適用しました。
DateTime currentDateTime = DateTime.Now;
Guid formGuid = System.Guid.NewGuid();
bool success = false;
using (var context = new NSAFormsEntities())
{
NSAFormsEDM.NSForm nsForm = new NSAFormsEDM.NSForm();
SpeakerphoneForm speakerphoneForm = new SpeakerphoneForm();
NSAFormsEDM.Requestor requestor = new NSAFormsEDM.Requestor();
NSAFormsEDM.Authorizer authorizer = new NSAFormsEDM.Authorizer();
nsForm.FormGuid = formGuid;
nsForm.Form = "Speakerphone";
nsForm.CreateDate = currentDateTime;
nsForm.ModifiedBy = currentUser;
#region Speakerphone
speakerphoneForm.FormGuid = formGuid;
speakerphoneForm.ServiceDate = speakerphoneVM.ServiceDate;
speakerphoneForm.LocationId = speakerphoneVM.LocationId;
speakerphoneForm.CreateDate = currentDateTime;
speakerphoneForm.CreatedBy = currentUser;
speakerphoneForm.NSForm = nsForm;
#endregion
#region Requestor
requestor.FormGuid = formGuid;
requestor.NetworkId = currentUser;
requestor.CreateDate = currentDateTime;
requestor.CreatedBy = currentUser;
requestor.NSForm = nsForm;
#endregion
#region Authorizer
authorizer.FormGuid = formGuid;
authorizer.NetworkId = authorizerVM.NetworkId;
authorizer.CreateDate = currentDateTime;
authorizer.CreatedBy = currentUser;
authorizer.NSForm = nsForm;
#endregion
context.NSForms.Add(nsForm);
context.SaveChanges();
success = true;
}
現在、EF 5.0を使用すると、NSFormのデータのみが挿入されます。明らかに、EF 5は、テーブルの関係で表されているように、FormIdキーを3つの補助テーブルに伝播しなくなりました。
質問:1回のSaveChanges()呼び出しですべてのテーブルにデータを挿入するには、EF 5を使用するコードをどのように記述する必要がありますか?
ありがとう、
アーノルド