gpt4 book ai didi

c# - 编辑 EF 实体列表的有效方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:41 24 4
gpt4 key购买 nike

我想知道您对使用 EF 更新包含子实体集合的实体的有效方法的看法。我对 EF 的内部工作原理不是很熟悉。

假设我们有一个 Study 实体,它有许多 Center 实体。这两个表使用仅包含 IdStudy 和 IdCenter 的链接表进行链接。属于研究的中心列表可以很容易地改变。每项研究有 1 到 50 个中心。

例如:初始选择中心1,2,3,4。用户通过删除 1,2 和添加 5,6 来编辑列表。所以新列表将是 3,4,5,6。

哪种方法更新数据库更有效?

  1. 删除所有现有条目。将所有项目插入新列表。

  2. 确定新内容。确定应该插入什么。删除不再选择的内容。插入新的。

  3. 对于新列表中的每个项目,更新现有记录。如果新列表的元素较少,则删除剩余的记录。如果新列表有更多元素,则插入其余元素。

提前致谢。

最佳答案

我个人总是选择第一个选项。编写代码在必要时更新所有内容,然后删除正确的记录,这太麻烦了。

您可以使用 Entity Framework 非常快速地删除所有内容,甚至可以在事务中完成所有操作。所以我会选择第一个选项。它的代码更少,更易于阅读和维护。

当然,如果你想保留审计线索(编辑之前选择的中心是什么?),这种方法是不可行的,或者你必须想一些其他的方式来实现审计跟踪。

是的,如果列表变得非常大(假设有 50 条记录),那么插入 50 行确实会变慢。尽管如此,您的代码不太可能包含任何错误,因为它非常简单。删除本研究的所有中心。为这项研究插入新的中心。这也可以节省时间。

简而言之:如果性能不是绝对关键,请多花几毫秒在数据库上执行插入操作,而不是编写仅更新/插入已更改记录的代码。

关于c# - 编辑 EF 实体列表的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31587919/

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