gpt4 book ai didi

entity-framework-core - Entity Framework 7 级联插入

转载 作者:行者123 更新时间:2023-12-04 02:26:12 24 4
gpt4 key购买 nike

我们刚刚从 EF6 合并到 EF7,因为我们在应用程序中使用了 ASP.Net 5。该项目刚刚开始,因此我们不会遇到发布依赖于 beta 库的代码的问题。

我们遇到了级联插入的问题。通过级联插入,我的意思是使用父级插入/更新子实体的集合。它似乎以一种令人惊讶的方式依赖于操作的顺序。

鉴于以下定义:

public class ParentEntity
{
public int Id { get; set; }
public ICollection<ChildEntity> Children { get; set; }
}

public class ChildEntity
{
public int Id { get;set; }

public ParentEntity Parent { get; set; }
}

以下代码有效(ChildTable 填充了 3 个值):
var parent = new ParentEntity();            

parentSet.Add(parent);

parent.Children = new List<ChildEntity>();

for (int i = 0; i < 3; i++)
{
var child= new ChildEntity { Parent = parent };
parent.Children.Add(child);
}

_uow.SaveChanges();

但以下没有(ChildTable 保持为空):
var parent = new ParentEntity();                

// Moved parentSet.Add()

parent.Children = new List<ChildEntity>();

for (int i = 0; i < 3; i++)
{
var child= new ChildEntity { Parent = parent };
parent.Children.Add(child);
}

parentSet.Add(parent);

_uow.SaveChanges();

为了使以下工作,我必须执行以下操作:
var parent = new ParentEntity();                

parent.Children = new List<ChildEntity>();

for (int i = 0; i < 3; i++)
{
var child= new ChildEntity { Parent = parent };
parent.Children.Add(child);
childSet.Add(child); // Added childSet.Add()
}

parentSet.Add(parent);

_uow.SaveChanges();

有人可以解释为什么会有这样的差异吗?在 EF6 中,这按我的预期工作。我会理解 EF7 中是否尚不支持自动跟踪的子实体,但显然,如果您移动 Set.Add 调用,您可以使其工作。更令我惊讶的是,在填充子集合之前将 Set.Add 调用移动到是有效的。

任何想法/解释?

我们使用 EF7 beta 7。

最佳答案

我们正在积极努力使其按预期运行。有关我们的最新想法,请参阅我们的 August 27, 2015 Design Meeting Notes .

关于entity-framework-core - Entity Framework 7 级联插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32496087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com