0

嗨,这里我们另一个实体框架问题和更新子实体。
场景:
我有名为“客户”的对象,这些对象具有“评估”和“每周评估”。客户端创建并保存良好,但评估(子实体)未附加并添加到数据库中。

     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 回答