2013-12-04 3 views
-2

При использовании этой статьи в качестве руководства here Я пытаюсь добавить метод GET к моему Repository код, который будет возвращать одну «запись» на основе 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.

Сообщение об ошибке при попытке компиляции есть "HandheldServer.Models.Platypus does not contain a definition for 'Find'*"

Но почему [ш, ж] УЛЬД это? Соответствующий класс из статьи не имеет метода поиска, либо ... ???

+0

Существует не так много связей со связанной статьей, это, прежде всего, вопрос EF (1 тег, который отсутствует). Если вы хотите получить ответы, приложите немного усилий в вопросе. –

+0

Нет, я не использую EF. И, как я упоминал в своем ответе, это было решено (и я отметил это как таковое 3 часа назад). –

+0

Это все еще не о MVC или веб-API. –

ответ

1

В руководстве, в котором вы были связаны, products имеет тип List<Product>. И List<T>does, in fact, have a Find()` method.

В соответствии с сообщением об ошибке, которое вы видите, platypi имеет тип HandheldServer.Models.Platypus, который представляет собой единственный экземпляр модели, а не набор этой модели. Если вы не определяете Find() на вашей модели, ни один экземпляр не будет иметь этот метод. (И не должно ... нет ничего, чтобы «найти» в одном экземпляре.)

Короче говоря, ваш объект platypi, вероятно, должен представлять собой набор объектов Platypus, а не один экземпляр. По крайней мере, если это соответствует реализации репозитория в этом учебнике.

1

В образце продуктов кода находится List<Product>. Find является стандартом method на общей коллекции.

0

Это была довольно глупая ошибка с моей стороны (я должен был лучше знать/думать более четко). Таким образом, это то, что работает:

public InventoryItem Get(int id) 
{ 
    return inventoryItems.Find(i => 0 == (String.Compare(i.Id, id.ToString()))); 
} 
Смежные вопросы