在以前的項(xiàng)目開發(fā)之中,經(jīng)常會(huì)遇到這樣一個(gè)問題:比如在外面項(xiàng)目的架構(gòu)設(shè)計(jì)之中,我們采用MVC和EntityFramework來構(gòu)建一個(gè)Web應(yīng)用程序。比如我們采用常用的多層架構(gòu),例如有Presentation層、BusinessLogic層、DataAccess層等,各層之間是相對(duì)獨(dú)立并且職責(zé)分明的。比如我們?cè)赑resentation層中會(huì)定義ViewModel,在DataAccess層中的DbContext部分又會(huì)由EntityFramework來自動(dòng)生成StorageModel,或者叫做DataModel。然后我們從DataAccess層從數(shù)據(jù)庫抓取到數(shù)據(jù)之后需要將這些數(shù)據(jù)傳遞給viewModel,并最終呈現(xiàn)給前段用戶,當(dāng)然兩種Model之間定義的字段(屬性)可能會(huì)有所區(qū)別,這個(gè)我們將會(huì)在稍后討論。

  我們先來看看如何解決這一類問題。首先最樸素笨拙的辦法就是,逐個(gè)屬性的為對(duì)象賦值,例如這樣:

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

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