gpt4 book ai didi

c# - entityframework 功能说明

转载 作者:行者123 更新时间:2023-11-30 16:51:38 25 4
gpt4 key购买 nike

下面的代码应该做什么?在此代码中添加包含表的目的是什么,它应该对与 PersonId 相关的 JobType 进行级联删除,还是只删除具有指定 PersonId 的 Person ?

db.tblPerson.Remove(db.tblPerson.Include("tblJobType").FirstOrDefault(c => c.PersonId== PersonId));

最佳答案

在这种情况下,.Include 要么是多余的,要么是非常糟糕的设计。

多余的:

  • .Include 用于急切加载相关实体(Documentation),因为它会立即交给.Remove 函数,相关实体永远不会被使用,因此它没有意义。
  • 如果这也是删除相关实体的尝试,那么这将独立于加载相关实体而发生。此效果由关系的级联删除设置决定

糟糕的设计:

  • 因为 .Include 将加载相关实体,所以需要在两个表之间进行 JOIN。根据 Person 和 JobType 之间的关系(例如 Optional),这可能会导致 Persons 被排除在外(例如那些没有 JobTypes 的人)。

结论

发布的代码只是删除具有指定 PersonId 的 Person。 .Include 可能只是一个复制粘贴错误,在这里没有任何影响。如上所述,这不会导致 CascadeDelete,这是由不同的设置决定的。但是,您应该了解 .Include 的副作用。

关于c# - entityframework 功能说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672122/

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