更新子实体实体框架

时间:2013-03-17 09:55:26

标签: entity-framework c#-4.0 entity-framework-4 linq-to-entities edmx

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

     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)时,我尝试了各种解决方案,但每次上下文抱怨它已经附加

请帮忙

非常感谢

安德鲁

1 个答案:

答案 0 :(得分:0)

通过创建新的评估并将其添加到originalItem来管理以对其进行排序。编辑现有的评估很简单,可以在originalItem列表中找到并更新

必须取消注释客户端.WeeklyAssessments andclient.Assessments以获取子实体的填充ID