0

こんにちは、Entity Framework に関する別の質問と子エンティティの更新です。
シナリオ:
私は、評価と週次評価を持つクライアントと呼ばれるオブジェクトを持っています。クライアントは正常に作成および保存されますが、評価 (子エンティティ) はデータベースにアタッチされず、追加されません。

     public SHAID.DataLayer.Client Save(SHAID.DataLayer.Client client)
    {
         System.Data.EntityKey key;
         object originalItem;

         using (_shaidEntities = new DataLayer.SHAIDEntities())
         {

             key = _shaidEntities.CreateEntityKey("Clients", client);

             if (_shaidEntities.TryGetObjectByKey(key, out originalItem))
             {

                 foreach (var item in client.Assessments)
                 {
                     if (item.Id == default(int))
                     {
                         item.Client.Id = client.Id;

                     }
                 }

                 _shaidEntities.ApplyCurrentValues(key.EntitySetName, client);

                 //client.WeeklyAssessments.Load();
                 //client.Assessments.Load();
             }
             else
             {
                 _shaidEntities.AddToClients(client);
             }

             _shaidEntities.SaveChanges();

         }

        return client;
    }

クライアント オブジェクトには評価が添付されており、クライアント参照 ID には既に正しい ID が設定されています
。評価のコレクション (AddObject、Attach) を反復処理するときにさまざまな解決策を試しましたが、コンテキストが不平を言うたびに、それは既に添付されています。

助けてください

とても有難い

アンドリュー

4

1 に答える 1

0

新しい評価を作成し、それらを originalItem に追加することで、これを整理することができました。既存の評価の編集は、originalItem リストで簡単に見つけて更新することができました

client.WeeklyAssessments と client.Assessments のコメントを外して、子エンティティの埋められた ID を取り戻す必要がありました

于 2013-03-18T09:32:11.270 に答える