【发布时间】:2011-04-10 11:49:56
【问题描述】:
我正在尝试让存储库模式与 MVC2 和 EF 一起使用。 我的问题在具体的存储库中。当我尝试将 EF 查询结果转换为视图模型实体的 IEnumerable 集合时:
Unable to cast object of type
'System.Data.Objects.ObjectQuery`1[Data_Service.MediaReleases]'
to type
'System.Collections.Generic.IEnumerable`1[TestMVCWithFacory.Models.Entities.MediaReleaseModel]'.
我觉得这是一件愚蠢的事情——它与 Linq 相关,以及延迟执行的工作原理,但我并不真正了解巫术。
那么我在那里误解了什么,我该如何解决呢?
视图模型:
public class MediaReleaseModel
{
public string Headline { get; set; }
public string FullText { get; set; }
}
存储库界面:
public interface IMediaReleasesRepository
{
IEnumerable<MediaReleaseModel> MediaReleases { get;}
}
具体存储库:
public class MediaReleaseRepository : IMediaReleasesRepository
{
private NewsEntities DataContext = new NewsEntities();
private IEnumerable<MediaReleases> _MRs;
public MediaReleaseRepository()
{
_MRs = from art in DataContext.MediaReleases select art;
}
public IEnumerable<MediaReleaseModel> MediaReleases
{
get { return (IEnumerable<MediaReleaseModel>)_MRs; }
}
}
控制器:
public class HomeController : Controller
{
private IMediaReleasesRepository _MRRepository;
public HomeController()
{
_MRRepository= new MediaReleaseRepository();
}
public ViewResult index()
{
return View(_MRRepository.MediaReleases.ToList());
}
}
【问题讨论】:
标签: entity-framework asp.net-mvc-2 repository-pattern