在以前的項(xiàng)目開發(fā)之中,經(jīng)常會遇到這樣一個(gè)問題:比如在外面項(xiàng)目的架構(gòu)設(shè)計(jì)之中,我們采用MVC和EntityFramework來構(gòu)建一個(gè)Web應(yīng)用程序。比如我們采用常用的多層架構(gòu),例如有Presentation層、BusinessLogic層、DataAccess層等,各層之間是相對獨(dú)立并且職責(zé)分明的。比如我們在Presentation層中會定義ViewModel,在DataAccess層中的DbContext部分又會由EntityFramework來自動生成StorageModel,或者叫做DataModel。然后我們從DataAccess層從數(shù)據(jù)庫抓取到數(shù)據(jù)之后需要將這些數(shù)據(jù)傳遞給viewModel,并最終呈現(xiàn)給前段用戶,當(dāng)然兩種Model之間定義的字段(屬性)可能會有所區(qū)別,這個(gè)我們將會在稍后討論。
我們先來看看如何解決這一類問題。首先最樸素笨拙的辦法就是,逐個(gè)屬性的為對象賦值,例如這樣:
var viewModels = new List<EmployeeViewModel>(); List<EmployeeStorageModel> storageModels = new List<EmployeeStorageModel>(); if (storageModels.Count > 0) { EmployeeViewModel viewModel = null; foreach (var storageModel in storageModels) { viewModel.Number = storageModel.Name; viewModel.Nam