MVC3 linq присоединяется - PullRequest
       14

MVC3 linq присоединяется

2 голосов
/ 12 декабря 2011

Как новичок пробую свои силы на MVC3, бритва, EF У меня есть три связанных таблицы, которые я хочу получить представление из него. В кратком изложении о таблицах

PJUsers - ID, memUID (этот уникальный идентификатор из членства), FirstName, LastName

PJAwards - пользователь назначает другого пользователя на премию, это связывает с awardtypesID в качестве внешнего ключа (awardId, bool: awardok)

PJAwartypes - (awardtypeID, awardName)

Запрос в контроллере выглядит так

    var lists =
from tl in db.PJawards
join u in db.PJUsers on tl.nomineeId equals u.ID into tl_u
join i in db.PJUsers on tl.nominatorId equals i.MemUID into tl_i
where tl.awardOk 
orderby tl.awardDated ascending

from u in tl_u.DefaultIfEmpty()
from i in tl_i.DefaultIfEmpty()
select new
{
   Status = tl.awardOk,
    nomineeFname = u.FirstName,
    nomineeLname = u.LastName,
    award =  tl.PJawards.awardName,
    Dated = tl.awardDated,
    nominatorFname = i.FirstName,
    nominatorLname = i.LastName,
    nomineeCountry = u.Citizen,
    nomineeResidence = u.Residence,
    awardtypeId = tl.ID
};

где-то я читал, что мне нужно создать класс модели, похожий на запрос в контроллере

{
public class AwardUserInfo
{
    public AwardUserInfo() { }
    public bool Status { get; set; }
    public string nomineeFname { get; set; }
    public string nomineeLname { get; set; }
    public string award { get; set; }
    public string Dated { get; set; }
    public string nominatorFname { get; set; }
    public string nominatorLname { get; set; }
    public string nomineeCountry { get; set; }
    public string nomineeResidence { get; set; }
    public int awardtypeId { get; set; }

}
}

Пожалуйста, я учусь на примерах, чтобы можно было предположить, что я ничего не знаю

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

где-то я читал, что мне нужно построить класс модели, похожий на запрос в контроллере

Попробуйте this .

Я думаю,ваша ef-модель похожа на enter image description here

Так что вы можете создать класс ViewModel

public class PJAwardsViewModel
{
    public int Id { get; set; }
    public string NominatorFName { get; set; }
    public string NomineeFname { get; set; }
    public string AwardName { get; set; }
    public bool IsAwarded { get; set; }
} 

Будет также хорошо, если вы добавите некоторый класс обслуживания

public class PJAwardsService
{
    public static List<PJAwards> GetAll()
    {
        using (var context = new YourDBEntities())
        {
            return context.PJAwards
                .Include(x => x.PJUsers)
                .Include(x => x.PJUsers1)
                .Include(x => x.PJAwartypes).ToList();
        }
    }
}

(не забудьте написать using System.Data.Entity;)

Затем вы можете добавить класс ViewModelHelper

public class PJAwardsViewModelHelper
{
    public static PJAwardsViewModel PopulatePJAwardsViewModel(PJAwards pjaward)
    {
        return new PJAwardsViewModel
        {
            Id = pjaward.Id,
            NominatorFName = pjaward.PJUsers.FirstName,
            NomineeFname = pjaward.PJUsers1.FirstName,
            AwardName = pjaward.PJAwartypes.AwardName,
            IsAwarded = pjaward.IsAwarded
        };
    }

    public static List<PJAwardsViewModel> PopulatePJAwardsViewModelList(List<PJAwards> pjawardsList)
    {
        return pjawardsList.Select(x => PopulatePJAwardsViewModel(x)).ToList();
    }
}

В конце ваш индексный метод контроллера будет выглядеть следующим образом

public ActionResult Index()
{
    var pjawards = PJAwardsViewModelHelper.PopulatePJAwardsViewModelList(PJAwardsService.GetAll().ToList());
    return View(pjawards);
}  

Единственное, что Вам нужно сделать, это добавить представление (построить проект раньше).Выберите PJAwardsViewModel как Model class и List как scaffold template.Наслаждайся этим.

0 голосов
/ 12 декабря 2011

Вот пошаговое руководство Стивена Сандерсона о том, как использовать Asp.net MVC3, EF Code First с MVCScaffolding (автоматизация powershell).

http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/

Это многочастное сообщение в блоге, которое проведет вас через увлекательное путешествие по MVC3.

Всего наилучшего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...