Для тех из вас (как и я), которые потеряли слишком много времени из-за этой ошибки:
Я получил ту же ошибку: «Не удалось найти реализацию шаблона запроса для типа источника« DbSet »», но решением для меня было исправление ошибки на уровне DbContext.
Когда я создавал свой контекст, у меня было это:
public class ContactContext : DbContext
{
public ContactContext() : base() { }
public DbSet Contacts { get; set; }
}
И мой репозиторий (я следовал шаблону репозитория в руководстве ASP.NET) выглядел так:
public Contact FindById(int id)
{
var contact = from c in _db.Contacts where c.Id == id select c;
return contact;
}
Моя проблема возникла из-за начальной настройки моего DbContext, когда я использовал DbSet в качестве универсального вместо типа.
Я изменил public DbSet Contacts { get; set; }
на public DbSet<Contact> Contacts { get; set; }
и вдруг запрос был распознан.
Это, вероятно, то, что k.m говорит в своем ответе, но поскольку он упомянул IEnumerable<t>
, а не DbSet<<YourDomainObject>>
, мне пришлось пару часов копаться в коде, чтобы найти строку, вызвавшую эту головную боль.