0

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を使用するコードをどのように記述する必要がありますか?

ありがとう、

アーノルド

4

0 に答える 0