【问题标题】:Why is Find not Found in my Repository? [closed]为什么在我的存储库中找不到 Find? [关闭]
【发布时间】:2013-12-04 18:27:53
【问题描述】:

以本文为指导here 我正在尝试将 GET 方法添加到我的存储库代码中,该方法将根据 ID 返回一个“记录”。但是给出的示例代码:

public Product Get(int id)
{
    return products.Find(p => p.Id == id);
}

...当适应我的班级类型时:

public Platypus Get(int id)
{
    return platypi.Find(p => p.Id == id);
}

...不会编译,因为找不到“查找”;并且 IDE 的上下文菜单中也没有可用的“resolve”。

尝试编译时的错误消息是,"HandheldServer.Models.Platypus does not contain a definition for 'Find'*"

但是为什么[sh,w]会呢?文章中对应的类也没有定义 Find 方法...???

【问题讨论】:

  • 与链接的文章没有太大的联系,这似乎主要是一个 EF 问题(缺少 1 标签)。如果您想得到答案,请在提问中付出一点努力。
  • 不,我没有使用 EF。而且,正如我在回答中提到的那样,这已经解决了(我在 3 小时前将其标记为这样)。
  • 这仍然与 MVC 或 Web API 无关。

标签: c# asp.net-mvc asp.net-web-api repository


【解决方案1】:

在您链接的教程中,products 的类型为 List<Product>。还有List<T>does, in fact, have a Find()` method

根据您看到的错误消息,platypi 的类型为 HandheldServer.Models.Platypus,它似乎是模型的单个实例,而不是该模型的集合。除非您在模型上定义 Find(),否则没有单个实例具有该方法。 (也不应该......在单个实例中真的没有什么可以“找到”。)

简而言之,您的platypi 对象可能应该是Platypus 对象的集合,而不是单个实例。至少如果它与该教程中的存储库实现保持一致。

【讨论】:

    【解决方案2】:

    在示例代码产品中是List<Product>Find 是通用集合上的标准 method

    【讨论】:

      【解决方案3】:

      这对我来说是一个相当愚蠢的错误(我应该更清楚/更清楚地思考)。所以这是有效的:

      public InventoryItem Get(int id)
      {
          return inventoryItems.Find(i => 0 == (String.Compare(i.Id, id.ToString())));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-28
        • 2020-11-21
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        • 2021-07-30
        • 2018-09-22
        • 1970-01-01
        相关资源
        最近更新 更多