2009-12-23 3 views
0

정렬하려고하는 ViewModel 개체의 컬렉션이 있습니다.C# MVC ViewModel 속성 OrderBy 예외

이 내 뷰 모델 클래스의 축약 된 뷰는 다음과 같습니다

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

이 날의 약식보기 시도 :

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

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

이것은 내가 내 컬렉션을 인스턴스화하고 내 저장소의 방법입니다 컬렉션을 주문하면 예외가 발생합니다.

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

나는이 하나에 난처한 해요 :

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

는 throw되는 예외입니다. 나는이 예외를받을 때 메소드를 호출하지 않으려 고합니다. 예를 들어 인터넷에서 볼 수있는 대부분의 경우와 같습니다. 내 ViewModel에서 속성의 속성별로 정렬하려고합니다. 어떤 팁?

답변

1

새로운 BookIndexFormViewModel (b)의 작업을 SQL에 매핑 할 수 없기 때문에이 오류가 발생합니다. BookIndexFormViewModel을 사용하여 Book을 래핑하기 전에 orderby를 원한다. 이런 식으로 GetAllBooks 내부에서 작동해야합니다.

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