【问题标题】:Graphdiff is removing entitiesGraphdiff 正在删除实体
【发布时间】:2014-10-08 22:01:22
【问题描述】:

我有以下实体:

public class Profile
{
    [Required]
    public string Name { get; set; }

    [Required]
    public string Description { get; set; }

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    public IList<Functionality> Functionalities { get; set; }
}  

public class Functionality
{
    [Required]
    public string Name { get; set; }

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
}  

在我的服务方法中,当我尝试以下操作时,它会从数据库中删除不在配置文件功能列表中的功能对象:

(...)
var databaseFunctionalities = this
                             .Repository
                             .GetByIds<Functionality>(profile
                                                     .Functionalities
                                                     .ToIdList());
profile.Functionalities.Clear();
profile.Functionalities.AddRange(databaseFunctionalities);

((BaseRepository)this.Repository)
.UpdateGraph(profile,map => map.OwnedCollection(p => p.Functionalities));
this.Repository.SaveChanges();  
(...)  

有什么想法吗?
谢谢!

【问题讨论】:

    标签: entity-framework graphdiff


    【解决方案1】:

    在阅读了andypelzer在这篇文章中关于Associated和Owned之间差异的解释后找到了解决方案:

    https://github.com/refactorthis/GraphDiff/issues/43

    所以我改变了

    ((BaseRepository)this.Repository)
        .UpdateGraph(profile,map => map.OwnedCollection(p => p.Functionalities));
    this.Repository.SaveChanges();  
    

    ((BaseRepository)this.Repository)
        .UpdateGraph(profile,map => map.AssociatedCollection(p => p.Functionalities));
    this.Repository.SaveChanges();  
    

    并且像魅力一样工作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      相关资源
      最近更新 更多