как заполнить видовой модели EF 4.1 - PullRequest
0 голосов
/ 18 февраля 2012

Я работаю над проектом asp.net MVC 3.Я использую код EF 4.1 первый подход.У меня есть класс сущности под названием споры.Он сопоставляется с таблицей в базе данных с именем tblDisptes.У него есть три свойства: Lastviewedby, Lastupdatedby, LastRespondedBy ... все три целых числа.Я создал модель представления «disputeviewmodel» с еще тремя свойствами Lastviewedbyname, Lastupdatedbyname, LastRespondedByname и свойством с именем dispute.Теперь моя функция репозитория возвращает список споров.как преобразовать этот список в список disputeviewmodel, чтобы эти три свойства были заполнены именами?

Пожалуйста, предложите.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

Почему ваш Спор не выглядит так?

class Dispute
{
    public User LastViewedBy;
    public User Lastupdatedbyname
    public User LastRespondedByname
}

Вот так это должно выглядеть. Тогда проблема решена. Когда вы запрашиваете Споры, у вас уже есть Пользователи (с именами пользователей).

0 голосов
/ 18 февраля 2012

Ваша модель представления действительно не нуждается в свойстве с именем dispute.Модель представления не должна ссылаться на ваши доменные модели.

Что касается сопоставления, одна возможность состоит в том, чтобы сделать это вручную, но это может быстро обременительно с более сложными моделями:

public ActionResult Foo()
{
    IEnumerable<disputes> disputes = ... fetch from repo
    IEnumerable<disputeviewmodel> disputeViewModels = disputes.Select(x => new disputeviewmodel
    {
        Lastviewedbyname = x.Lastviewedby,
        Lastupdatedbyname = x.Lastupdatedby,
        LastRespondedByname = x.LastRespondedBy
    });
    return View(disputeViewModels);
}

Так что лучшим подходом будет использование AutoMapper :

public ActionResult Foo()
{
    IEnumerable<disputes> disputes = ... fetch from repo
    IEnumerable<disputeviewmodel> disputeViewModels = Mapper.Map<IEnumerable<disputes>, IEnumerable<disputeviewmodel>>(disputes);
    return View(disputeViewModels);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...