我從MVC和自動映射器開始,並希望得到一些指導。我有一些領域模型和視圖模型是這些領域模型的組合。基本上有4類MVC和Automapper嵌套的多層次
Transcription
具有關聯Audio
這是由一個Client Staff
誰在Users
數據庫關係圖中的用戶ID擁有:EF產生
http://i49.tinypic.com/whcwsz.jpg
域模型(僅適用字段)
public class audio
{
public int AudioID { get; set; }
public string AudioLength { get; set; }
public virtual ClientStaff ClientStaff { get; set; }
public virtual ICollection<Transcription> Transcriptions { get; set; }
}
public class ClientStaff
{
public int ClientStaffID { get; set; }
public int StaffType { get; set; }
public int ClientID { get; set; }
public virtual ICollection<Audio> Audios { get; set; }
public virtual User User { get; set; }
}
public class User
{
public int UserID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<ClientStaff> ClientStaffs { get; set; }
}
public class Transcription
{
public int TranscriptionID { get; set; }
public string TranscriptionText { get; set; }
public virtual Audio Audio { get; set; }
public Nullable<int> AudioID { get; set; }
}
視圖模型
public class customVM
{
public int AudioID { get; set; }//get from audio
public string Path { get; set; }//get from audio
public string AudioLength { get; set; }//get from audio
public DateTime AudioCreatedOn { get; set; }//get from audio
public int ClientStaffID { get; set; }//get from audio
public string TranscriptionText { get; set; }//get from transcription
public DateTime TranscriptionCreatedOn { get; set; }//get from transcription
public string UsersFirstName { get; set; }//get from users
public string UsersLastName { get; set; }//get from users
}
控制器動作
public ActionResult Index()
{
IEnumerable<Audio> x= db.getAudioFiles();
Mapper.CreateMap<Audio, customVM>();
IEnumerable<customVM> model =
Mapper.Map<IEnumerable<Audio>, IEnumerable<customVM>>(x);
Mapper.AssertConfigurationIsValid();
return View(model);
}
問題:
AutoMapper
從Transcription
和ClientStaff
拿起性質,但我怎麼得到用戶的名字和姓氏?或者說,概括一下如何通過自動映射器獲得第二級嵌套類屬性。還是我錯誤地接近了整個問題?
絕對傳奇!感謝這樣一個清晰簡潔的解釋。 Mapper.Map
感謝您的更新。我曾經受到過挑戰,並且很想知道它是否有效,但還沒有機會嘗試。 – Mightymuke
請注意,爲了安全起見,您可能需要指定您的映射,如下所示:src =>(src.ClientStaff == null || src.ClientStaff.User == null)? string.Empty:src.ClientStaff.User。FirstName' – Mightymuke