我需要使用AutoMapper將模型映射到視圖模型。Automapper映射問題
型號:
[Table("News")]
public class News
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
public DateTime DatePostedOn { get; set; }
public int Position { get; set; }
public Category Category { get; set; }
public virtual ICollection<Picture> Pictures { get; set; }
}
[Table("Pictures")]
public class Picture
{
[Key]
public int Id { get; set; }
public DateTime DateCreated { get; set; }
public string Filename { get; set; }
public int Type { get; set; }
public virtual ICollection<News> News { get; set; }
}
視圖模型:
public class HomeViewModels
{
public IList<HomeMainNews> MainNews { get; private set; }
}
public class HomeMainNews
{
public int Id { get; set; }
public string Title { get; set; }
public string Date { get; set; }
public string PictureURL { get; set; }
}
映射:
Mapper.CreateMap<News, HomeMainNews>();
我該如何映射有一組圖片的新聞,在視圖模型只有一個圖片根據一定條件「Type = 2」
目前的解決方案:
vm.MainNews = db.News
.Select(n => new HomeMainNews {
Id = n.Id,
Date = n.DatePostedOn.ToString(),
Title = n.Title,
PictureURL = n.Pictures.Where(p => p.Type == 1).Select(p => p.Filename).FirstOrDefault().ToString()
}).ToList();
Automapper解決方案:
vm.MainNews = db.News.Project().To<HomeMainNews>().ToList();
對於這麼簡單的東西(4場在你的虛擬機),我不會爲此特別是如果使用Automapper其中一個領域有一些定製工作。你可以簡單地使用'HomeViewModels view = new HomeViewModels(MainNews = news.Select(Map))'其中Map是一個駐留在控制器中的方法,返回映射這3個基本字段和第4個字段周圍邏輯的HomeMainNews。 – wal 2015-01-20 23:47:38
嗨,謝謝。你能分享一個例子嗎? – Patrick 2015-01-21 00:21:25
你試過了什麼?我不能僅僅爲你提供一個例子。我在第一條評論中給出了基本結構 – wal 2015-01-21 00:33:26