Это продолжение this questionиздевались DbSet делает возвращаемое значение при использовании genrics
Я насмешливо в DbContext с несколькими DbSets. Я добавляю объекты к издеваемым объектам, но когда я пытаюсь запросить конкретный объект по его id
, он выдает ошибку.
AmazonReport.Tests.ProductTests.ProductControllerTest.TestReturnEditedModel:
System.InvalidOperationException : Sequence contains no matching element
я сузил проблему этой функции (цикл foreach
есть, чтобы убедиться, что идентификатор им проходя находится в DbSet, что она есть)
public virtual TEntity Get(TId id)
{
foreach(TEntity b in this.DbSet)
{
Console.WriteLine(b.Id + " and " + id);
}
return this.DbSet.Single(x => (object)x.Id == (object)id);
//return this.DbSet.Single(x => Convert.ToInt32(x.Id) == Convert.ToInt32(id));
//return this.DbSet.SingleOrDefault(x => (object)x.Id == (object)id);
}
как таковые, не работает. Однако, если я прокомментирую текущую инструкцию return и использую return this.DbSet.Single(x => Convert.ToInt32(x.Id) == Convert.ToInt32(id));
, она не выкинет ошибку.
Так что мой вопрос в том, почему сравнение не возвращает никаких объектов, если DbSet
содержит объект с id == 3
и принятый в TId id == 3
?
Можем ли мы увидеть код настройки для насмешливого DbSet? –