2017-01-27 161 views
0

時刪除所有陣列我有下面的類Automapper映射同一類

public class Unit 
{ 
    [JsonProperty("id")] 
    public string Id { get; set; } 
    [JsonProperty("unittype")] 
    public UnitType UnitType { get; set; } 
    [JsonProperty("name")] 
    public string Name { get; set; } 
    [JsonProperty("language")] 
    public string Language { get; set; } 
    [JsonProperty("managers")] 
    public List<Manager> Managers { get; set; } 
    [JsonProperty("logoURL")] 
    public string LogoURL { get; set; } 
    [JsonProperty("naceCodeList") 
    public List<string> NaceCodeList { get; set; } 
    [JsonProperty("tags")] 
    public List<string> Tags { get; set; } 
    [JsonIgnore] 
    public string JoinedTags => string.Join(",", Tags); 
    [JsonProperty("respondents")] 
    public List<Respondent> Respondents { get; set; } 
    [JsonProperty("childUnits")] 
    public List<Unit> ChildUnits { get; set; } 
    public string Parent { get; set; } 
} 

我也有我的BaseRepository的構造以下

 Mapper.Initialize(cfg => 
     { 
      cfg.CreateMap<Unit, Unit>(); 
     }); 

我的問題是,當我在我的儲存庫,做Mapper.Map(unitToUpdate, unit);它清空所有的List<whatever>屬性。

這是默認行爲嗎?我在這裏做錯了什麼?

爲了完整起見,這是我的UpdateUnit功能

public void UpdateUnit(ClaimsPrincipal user, string orgId, Unit unitToUpdate) 
    { 
     var org = Get(user, orgId); 
     var unit = org.GetUnit(unitToUpdate.Id); 
     Mapper.Map(unitToUpdate, unit); 
     Update(user, org); 
    } 

所存儲的對象是包含表示公司Unit對象的分層結構另一類型。 org對象是存儲在數據庫中的對象,表示org對象的類具有它自己的函數,用於在其內部加載Unit對象。

回答

0

我想你的問題是,你需要首先定義來自兩個對象的所有集合的映射,然後你需要定義對象的映射。

想法是從底部到頂部(從嵌套到單位)。

例如(僅考慮回答者:

Mapper.CreateMap<RespondentDb, RespondentDto>(); 
Mapper.CreateMap<UnitDb, UnitDto>() 
    .ForMember(dest => dest.Respondents, opt => opt.MapFrom(src => src.Respondents); 

一些參考:

  1. https://github.com/AutoMapper/AutoMapper/wiki/Nested-mappings

  2. https://codereview.stackexchange.com/questions/70856/automapper-mapping-a-nested-collection-to-a-list(在這裏我們有一個只包含一個列表的對象,也許很高興知道這一點,因爲你可以遇到相同的情況)

+0

但它是同一類。我從單元映射到單元。它只是一個來自數據庫的新鮮事物,還有一個來自調用它的mvc控制器。 –

+0

我真的不知道這個場景,因爲我沒有使用從/到同一個類的映射。我知道前一段時間有些問題與此有關,所以我避免了(例如:https://github.com/AutoMapper/AutoMapper/issues/656) –

+0

也許最好還是創建一個github問題,因爲這是不好的沒有很好的文檔記錄,可以與我們在開發中選擇的一些內部路徑相關聯。 –