2012-05-24 3 views
2

당신이 EmployeController (MVC 4)에서 테이블 (Сотрудник 및 Должность)를 결합 나를 도와 줄 수 LINQ에 참여사용 내부는

소스 코드 : Employeess에 대한

public ViewResult List(int page = 1) 
{ 
    EmployeListViewModel viewModel = new EmployeListViewModel 
    { 
     Employes = repository.Сотрудник 
     .OrderBy(e => e.FAM).ThenBy(n => n.Name).Skip((page - 1) * PageSize) 
     .Take(PageSize), 
     PagingInfo = new PagingInfo 
     { 
      CurrentPage = page, 
      itemsPerPage = PageSize, 
      TotalItems = repository.Сотрудник.Count() 
     } 
    }; 
    return View(viewModel); 
} 

소스 저장소 :

using System.Linq; 
using WebService.Domain.Abstract; 
using WebService.Domain.Entities; 

namespace WebService.Concrete 
{ 
    public class EFEmployeRepository: IEmployeRepository 
    { 
     private EFDbContext context = new EFDbContext(); 

     public IQueryable<Сотрудник> Сотрудник 
     { 
      get { return context.Сотрудник; } 
     } 
    } 
} 

테이블 가입에 도움이 필요합니다 (Сотрудник [appointmnet_id] with Должность [ID])

+0

시도 repository.Сотр дник.Include (Должность)는 Должность Сотрудник 엔티티는 가상 속성 있어야 할 곳에. – Meonester

+0

AD Up : Fluent mappings for : 질문 (대답 => a.Сотрудник) .WithMany (b => b.Должность). 맵 (c => c.MapKey ("appointmnet_id")) – Meonester

답변

0

Сотрудник에서 Appointment of type Должность로 등록 정보를 생성하십시오. 그런 다음 가입 할 필요가 없으며 저장소 내의 탐색 속성을 따라야합니다.

편집 : 코드입니다 샘플

클래스 정의 :

public class Сотрудник { 
    ... 

    public int appointmnet_id { get; set; } 
    [ForeignKey(appointment_id)] 
    public Должность appointment { get; set; } 
} 

저장소 방법 :

public List<Сотрудник> GetStuff(int page, int PageSize) { 
    return (
     from e in repository.Сотрудник.Include("appointment") 
     orderby e.FAM 
     thenby e.Name 
     select e 
    ).Skip((page - 1) * PageSize).Take(PageSize).ToList(); 
} 

MVC 작업 :

public ViewResult List(int page = 1) 
{ 
    EmployeListViewModel viewModel = new EmployeListViewModel 
    { 
     Employes = GetStuff(page, PageSize), 
     PagingInfo = new PagingInfo 
     { 
      CurrentPage = page, 
      itemsPerPage = PageSize, 
      TotalItems = repository.Сотрудник.Count() 
     } 
    }; 
    return View(viewModel); 
} 
+0

답변 해 주셔서 감사합니다. 코드 샘플을 포함하도록 작은 코드 샘플 – He11b0rn

+0

업데이트 답변을 작성해 주실 수 있습니까? 이건 어떻습니까? – robrich

+0

어디서 전화 걸기 GetStuff? – He11b0rn

관련 문제