【问题标题】:Entity framework update children when updating parent实体框架在更新父级时更新子级
【发布时间】:2011-11-11 05:36:01
【问题描述】:

我正在发送父级及其子级以更新到我的服务层。

模型设置如下:

public class Parent
{
    public int ParentId { get; set; }
    public ICollection<Child> Children;
}

public class Child
{
    public int ChildID {get; set;}
    public virtual Parent Parent{get;set}
    public virtual int ParentId{get; set;}
    public string FirstName { get; set; }
}

我想要的行为是孩子总是附加到父母,所以如果一个孩子在数据库中没有发现附加,我们应该删除它。如果它不存在,则创建它。如果存在,请更新它。

如何在不编写代码手动进行所有这些调用的情况下完成此操作?就像删除所有,然后重新添加所有。

【问题讨论】:

    标签: entity-framework entity-framework-4.1


    【解决方案1】:

    您不需要删除所有子项并重新添加它们(例如,如果您在数据库中有其他实体引用您只想更新的子项之一,则无论如何这可能是一个问题。删除并重新-添加它会导致违反外键约束)。

    你实际需要做的事情更复杂:(

    您必须将原始对象图加载到数据库中,然后逐个检查它是否已被删除、是否是新的或是否已存在。

    这里有一个非常适合您的模型的示例:

    The relationship could not be changed because one or more of the foreign-key properties is non-nullable

    Entity Framework 不支持您使用分离的对象图更新数据库中的对象图。它提供的唯一支持是更新标量和复杂属性。对于那些你可以使用ApplyCurrentChangesObjectContext)或Entry(entity).CurrentValues.SetValuesDbContext)。后者在链接示例中用于更新父级和每个子级的标量属性。但是更新实体之间的关系是一项手动任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      相关资源
      最近更新 更多