2014-01-16 2 views
1

C# MVC에서 페이징을 사용하려고합니다. 하지만 잘못된 정수 리터럴 '62020131100304263882789'받고 있어요. 큰 긴 번호는 실제로 우리가 만든 고유 한 FaxID 번호입니다.이 번호는 문자열입니다. 이 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?잘못된 정수 리터럴 C#

public class GenericRepository<TEntity> where TEntity : class 
{ 
    internal FaxContext context; 
    internal DbSet<TEntity> dbSet; 

    public GenericRepository(FaxContext context) 
    { 
     this.context = context; 
     this.dbSet = context.Set<TEntity>(); 
    } 

    public virtual IEnumerable<TEntity> GetWithRawSql(string query, params object[] parameters) 
    { 
     return dbSet.SqlQuery(query, parameters).ToList(); 
    } 

    //public IPagedList<T> Search(Expression<Func<T, bool>> filters, string sorting, List<string> includeList, int currentPageNumber, int pageSize) 

    public virtual IEnumerable<TEntity> GetAll(int skip, int take) 
    { 
     IQueryable<TEntity> query = dbSet; 
     System.Diagnostics.Debug.Print(context.Faxes.First().FaxID); 

     return query.OrderBy(TEntity => TEntity.).Skip(skip).Take(take).ToList(); 

     return query.OrderBy(context.Faxes.First().FaxID).Skip(skip).Take(take).ToList(); 
    } 

감사

답변

1

당신은 Expression<Func<TEntity, TKey>>을 기대 OrderBy 방법에 정수 값 (FaxID)를 전달하는 -이 오류가 이유입니다.

람다 식을 사용하여 엔티티의 키를 선택하여 결과를 정렬하십시오. 그것은 다음과 같습니다. (TEntity에 제약 조건이있어서 SomeProperty를 사용할 수 있다고 가정합니다. 그렇지 않으면 주문이 여기에 적합하지 않습니다.)

return query.OrderBy(t => t.SomeProperty) 
      .Skip(skip) 
      .Take(take) 
      .ToList(); 
+0

빠른 응답을 가져 주셔서 감사합니다. "TEntity에 대한 제약"을 확장하는 것이 너무 친절하십니까? 나는 C# MVC와 저장소 패턴을 배우고있다. 내가 볼 수있는 유일한 속성은 "Equals, GetHashCode, GetType 및 ToString"입니다. 고맙습니다. – user1828605

+1

@ user1828605 일반 저장소 클래스가 있다고 생각합니다. 'public class Repository '와 같은 것입니다. 제약없이 TEntity 유형의 변수에 사용할 수있는 객체의 메서드 만 있습니다. 이 클래스에 제네릭 매개 변수 제약 조건을 넣으면 (예 :'TEntity : BaseEntity'를 추가하십시오) BaseEntity 멤버를 갖게됩니다 –

+0

@ user1828605 BTW 기본 리포지토리에서 정렬 할 필드는 무엇입니까? –