2016-04-01 26 views
1

我在使用AutoMapper進行投射時遇到了問題。以下是詳細信息。合併 - 使用AutoMapper進行映射

這裏是我的源類

public class FamilyModel 
{ 
    public int FamilyID { get; set; } 
    public string FamilyName { get; set; } 
} 

這裏是我的目的地類現在

public class SaveKitViewModel 
{ 
    public int FamilyID { get; set; } 
    public string FamilyName { get; set; } 
    public int UserId { get; set; } 
} 

當我試圖種姓源對象到目標對象使用Automapper它給我的錯誤,我'm試圖忽略UserId對象因爲它不存在於Source類中

var mapper = new MapperConfiguration(cfg => 
{ 
    cfg.CreateMap<FamilyModel, SaveKitViewModel>() 
     .ForMember(d => d.UserId, m => m.Ignore()); 
    }).CreateMapper(); 
    dbObject = mapper.Map(model, dbObject); 
} 

任何人都可以告訴我上面的代碼有什麼問題嗎?

+1

請告訴我的錯誤? –

+0

我收到以下錯誤@JamesDev 缺少類型映射配置或不支持的映射 – Hetal

回答

1

由於UserId不在源地圖,你不需要明確.Ignore它在映射引導 - 默認情況下將被忽略。

看似您想要將映射的源屬性合併到現有的目標對象中。您不需要重新分配目標對象 - 現有屬性將會發生變化。例如:

var mapper = new MapperConfiguration(cfg => 
{ 
    cfg.CreateMap<FamilyModel, SaveKitViewModel>(); 
}).CreateMapper(); 

var existingSaveKitViewModel = new SaveKitViewModel 
{ 
    UserId = 1234 
}; 
var familyModel = new FamilyModel 
{ 
    FamilyID = 9876, 
    FamilyName = "Bloggs" 
}; 
mapper.Map(familyModel, existingSaveKitViewModel); 

導致合併existingSaveKitViewModel

FamilyID = 9876, 
    FamilyName = "Bloggs" 
    UserId = 1234 
+0

這是行不通的 – Hetal

+0

@HetalJariwala我的示例工作上面所列 - 我已經將其添加到[GitHub上這裏] (https://github.com/nonnb/SO36353982/blob/master/ConsoleApplication1/Program.cs)。也許你的MVCE不是這個問題的真實代表。請編輯您的原始問題與實際問題? – StuartLC

0

試試這個:

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

SaveKitViewModel sktv = new SaveKitViewModel(); 
FamilyModel fm = Mapper.Map<FamilyModel>(sktv.OfType<SaveKitViewModel>()); 
+0

不工作給了我同樣的錯誤 – Hetal