C # MVC ViewModel Свойство OrderBy Исключение - PullRequest
0 голосов
/ 23 декабря 2009

У меня есть коллекция объектов ViewModel, которые я пытаюсь отсортировать.

Это сокращенное представление моего класса ViewModel:

public class BookIndexFormViewModel
{
    //Properties
    public Book Book                        { get; set; }

    //Constructor
    public BookIndexFormViewModel(Book book)
    {
        Book = book;
    }

Это метод в моем хранилище, где я создаю экземпляр своей коллекции:

public IQueryable<BookIndexFormViewModel> GetAllBooks()
    {
        return db.Books.Select(b => new BookIndexFormViewModel(b));
    }

Это сокращенное представление о том, что я пытался заказать коллекцию, что вызывает исключение.

var books = _bookRepository.GetAllBooks();
books.OrderBy(x => x.Book.Name);

Это исключение, которое выдается:

The member 'TheBibliophile.Controllers.BookIndexFormViewModel.Book' has no supported translation to SQL.

Я поставлен в тупик на этом. Я не пытаюсь вызвать метод при получении этого исключения, как в большинстве случаев, которые я вижу в сети. Я просто пытаюсь отсортировать по свойству свойства в моей ViewModel. Любые советы?

1 Ответ

1 голос
/ 24 декабря 2009

Это приводит к ошибке, потому что то, что вы делаете, новый BookIndexFormViewModel (b), не может быть сопоставлен с SQL. Вы хотите сделать заказ, прежде чем обернуть книгу с помощью BookIndexFormViewModel. Примерно так должно работать внутри GetAllBooks ()

return db.Books.OrderBy (x => x.Name) .ToList (). Select (b => new BookIndexFormViewModel (b));

...