ViewModels
(GameSectionVM 및 ReleaseInfoVM)을 두 개 결합한 다음 데이터로 적절하게 채우는 방법을 알아 내려고합니다. 나는 내가 어떻게하는지 안다.). 일반적으로 나는 하나의 코드를 다른 것으로 복사하지만, 끊기고있는 것은 GameSectionVM이 DB 쿼리의 단일 행 결과만을 포함하는 반면 다른 VM (ReleaseInfoVM)은 0 이상의 행을 포함한다는 사실입니다. 결과. 또한 VM에 모든 데이터를 채우는 방법에 대해 조금 확신이 없으며 코드에 대한 올바른 생각이 필요합니다.두 개의 ViewModel을 결합하여 하나의 행을 포함하는 결과 1 개, 여러 행 결과를 포함하는 다른 하나
GameSectinVM :
public class GameSectionVM
{
public string GameTitle { get; set; }
public string LogoFileName { get; set; }
public string Synopsis { get; set; }
}
ReleaseInfoVM
public class ReleaseInfoVM
{
public Int16 SectionID { get; set; }
public string ReleaseName { get; set; }
public string Platform { get; set; }
public string Publisher { get; set; }
public string Location { get; set; }
[HiddenInput]
public DateTime? ReleaseDate { get; set; }
[HiddenInput]
public string ReleaseDateText { get; set; }
public string DateReleased
{
get
{
return (ReleaseDate.HasValue) ? ReleaseDate.ToString() : ReleaseDateText;
}
}
}
이 내가 현재 VM을 채우기 모두에 사용하는 코드입니다 :
var model = (from s in db.Sections
join f in db.Files
on s.LogoFileID equals f.ID into s_f
where s.RouteName == SectionName
from x in s_f.DefaultIfEmpty()
select new GameSectionVM
{
GameTitle = s.Title,
LogoFileName = x.FileName,
Synopsis = s.Synopsis
}).Single();
var ReleaseInfo = db.Releases.All(r => r.SectionID == SectionID);
나는 ReleaseData을 채우기 위해 코드를 것 이미징 것 두 VM을 결합 할 때 동일하게 유지하지만 var ReleaseInfo
대신 uld가 model.ReleaseInfo
편집 : 각 게임 섹션에 여러 개의 릴리스가있을 수 있다는 점을 잊어 버렸습니다. 두 개의 VM을 결합하여 단일 모델에보기로 넘어가려면 섹션의 제목, 로고, 종관을 갖게됩니다. , 그리고 해당 게임의 각 릴리스에 대한 모든 릴리스 정보. FK
GameSectionVM
및 ReleaseInfoVM
서로처럼 아무것도 보이지 않는 점을 감안
감사합니다. 제안 된대로 ICollection을 추가했지만 정보를 얻기위한 쿼리에서 IQueryable에서 ICollection으로 변환 할 수 없다고 말합니다. 'model.ReleaseInfo = (from r.db.Releases r.All();' –
Matthew
VM에서 IQueryable을 사용하거나 (성능 문제를 읽으려는 경우)'.All()을 사용할 수 있습니다. ToList();' – Claies