【问题标题】:Updating Child Entities Entity Framework更新子实体实体框架
【发布时间】:2013-03-17 09:55:25
【问题描述】:

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

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

请帮忙

非常感谢

安德鲁

【问题讨论】:

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


    【解决方案1】:

    通过创建新的评估并将它们添加到 originalItem 中来解决这个问题。可以在 originalItem 列表中轻松找到编辑现有评估并进行更新

    必须取消注释 client.WeeklyAssessments 和client.Assessments 才能取回子实体的填充 ID

    【讨论】:

      猜你喜欢
      • 2014-09-07
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多