有没有办法使用ValueInjecter映射嵌套集合?

时间:2016-05-31 02:06:27

标签: c# entity-framework dto valueinjecter

我有一个EF数据结构,其数据嵌套了两层深度,看起来大致如下:

class Country {
    string Name {get; set;}
    ICollection<State> States {get; set;}
}

class State {
    string Name {get; set;}
    ICollection<County> Counties {get; set;}
}

class County {
     string Name {get; set;}
}

或者:一个国家有州,每个州都有县。

我为这个例子简化了很多远程外观,所以我的DTO模型在这里实际上是相同的结构。使用ValueInjector我希望我的代码看起来像。

 var dbCountry = _dbContext.Countries.Find(id);
 var dtoCountry = new DTO.Country();
 dtoCountry.InjectFrom<FlatLoopInjection>(dbCountry);
 foreach (var dbState in dbCountry.States) {
    var dtoState= new DTO.State();
    dtoState.InjectFrom(dbState);
    dtoState.Counties = dbState
       .Counties
       .Select(m => new DTO.County().InjectFrom(m))
       .Cast<DTO.County>()
       .ToList();
    dtoCountry.States.Add(dtoState);
 }

问题是:如果没有foreach循环,有没有办法解决这个问题?并不是说我是反循环(并且我喜欢用巨魔开始一场神圣的战争),但这似乎将两种模式混合在一起(linq和循环)。

感谢。

0 个答案:

没有答案