2

EmployeeController (MVC 4) でテーブル (Сотрудник と Должность) を結合するのを手伝ってくれませんか?

ソースコード :

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

Employees のソース リポジトリ:

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])

4

1 に答える 1

0

タイプ Должность の Appointment という名前の Сотрудник のプロパティを作成します。その後、参加する必要はありません。リポジトリ内のナビゲーション プロパティに従うだけで済みます。

編集:コードサンプル

クラス定義:

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);
}
于 2012-05-24T05:49:48.353 に答える