Я действительно изо всех сил пытаюсь понять проблему, с которой сталкиваюсь. У меня очень простой репозиторий со следующим кодом:
public class ProductRepository : IProductRepository
{
private Table<Product> productTable;
public Product GetProductById(int id)
{
return productTable.Where(p => p.ProductId == id).Single();
}
public IQueryable<Product> GetProducts()
{
return productTable;
}
}
У меня есть контроллер с именем AddToCart (). Вышеуказанный класс репозитория передается в контроллер через DI. Я передаю productId в этот контроллер, и вызывается метод репозитория. Проблема в том, что нулевое значение возвращается, когда Продукт существует.
public void AddToCart(int productId)
{
//Returns Null value
Product product = productRepository.GetProductById(productId);
...
}
Я думал, что проблема может быть в том, что мне нужно IQueryable<>
вокруг класса, который я возвращаю. Я также изменил свой метод AddToCart различными способами, чтобы попытаться заставить его работать.
public IQueryable<Product> GetProductById(int id)
{
return productTable.Where(p => p.ProductId == id);
}
public void AddToCart(int productId)
{
//Throws error / Returns Null value
Product product = productRepository.GetProductById(productId).Single();
//Returns Null value
Product product = productRepository.GetProductById(productId).FirstOrDefault();
}
Тем не менее, следующее работает, и у меня нет причин, почему! По сути, это тот же код, который выполняется в контроллере. У кого-нибудь есть идеи? : /
public void AddToCart(int productId)
{
Product product = productRepository.GetProducts().FirstOrDefault(p => p.ProductId == productId);
}