2012-05-24 5 views
2

Можете ли вы помочь мне с объединения таблиц (Сотрудник и ДОЛЖНОСТЬ) в EmployeController (MVC 4),Использование внутреннего соединения в LINQ

Исходный код:

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); 
} 

Источник хранилище Employeess:

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.Сотрудник; } 
     } 
    } 
} 

Мне нужна помощь для соединения таблиц (Сотрудник [assignmnet_id] с Должность [ID])

+0

Попробуйте repository.Сотр дник.Include (Должность), где должен быть Должность виртуальной собственности в СОТРУДНИК сущности. – Meonester

+0

AD Up: Свободные сопоставления для должности: HasOptional (a => a.Сотрудник) .WithMany (b => b.Должность) .Map (c => c.MapKey ("assignmnet_id")) – Meonester

ответ

0

Создайте объект на Сотрудник под названием Назначение типа Должность. Затем вам не нужно присоединяться, вам нужно только следовать за свойством навигации внутри репозитория.

EDIT: Код образца

Определение класса:

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

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

Repository Метод:

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

Смежные вопросы