【发布时间】:2021-11-04 23:14:41
【问题描述】:
NB我不是在问如何在数据库中查找/过滤实体。我不是在问Find 和Where 之间的区别。我不是在问泛型的含义。
根据the docs,DbContext 提供了方法Find 和Find<T>。通常,我通过DbSet,但注意到在上下文和数据库集上都有Add(),我想看看如果我也尝试直接在上下文而不是数据库集上过滤会发生什么。
不过,我还没有找到一个这样的调用示例。很多关于通过数据库集的信息以及顶部免责声明中提到的差异。但我没有看到直接在上下文中显示 Find() 或 Find<T>() 用法的示例。
有可能吗?如果有,怎么做? Intellisense 很神秘……
【问题讨论】:
-
当你想通过主键查找时使用
Find。注意到主键可能很复杂。例如,您有表Person,其中ID (int)是主键,那么您可以将整数值传递给Find。你有另一个表PersonAddress,主键是(PersonID, AddressID)。然后你需要传递一个匿名对象,例如Find(new {1, 2}). -
@LeVu 我考虑过这种可能性,但对我来说没有意义,因为它通常不连贯。就个人而言,我是 GUID 的忠实信徒,所以我被覆盖了,但是有很多人更喜欢整数作为 ID,然后你最终会遇到一堆具有相同 ID 的不同实体/实例。会有 ID 等于 1234 的客户,还有订单、发票等。为什么在这种情况下他们还要发布方法?似乎我错过了一些东西(因为我深信 MS 的编码人员没有)。
标签: c# entity-framework .net-core