0
根據目標值可以忽略嗎?Automapper - 映射時忽略
看看我想做的事:
object c;
var key = ce.CreateEntityKey<CustomerDataContract, Customer>("FullCustomerSet", item, o => o.ID);
if (ce.TryGetObjectByKey(key, out c))
{
Mapper.Map(item, (Customer)c);
}
else
{
c = Mapper.Map<CustomerDataContract, Customer>(item);
ce.AddObject("FullCustomerSet", c);
}
忽略CreateEntityKey
部分 - 它只是創造一個EntityKey
去從EDM獲得的項目。 ce
類型爲ObjectContext
。
我想要做的是嘗試從EDM獲取實體,使用AutoMapper更新它,或者如果它不在那裏,使用AutoMapper創建它。
問題是AutoMapper映射所有屬性 - 即使主鍵不允許被edm改變,我也會得到一個令人討厭的異常。我可以忽略CreateMap
中的PK,但是我不能在創建時做第二部分。我得到的PK從別的地方...
有一件事我可能會考慮一些是在CreateMap
- 目標對象或實際使用的方法在一些有條件的忽視。 另一個是Mapper.Map
方法應用一些忽略的屬性,或手動映射,像這樣:
var map = Mapper.FindTypeMapFor<TSource, TDestination>();
foreach (var item in map.GetPropertyMaps().OrderBy(o=>o.GetMappingOrder()))
{
if (ignore.Contains(item.DestinationProperty.Name))
{
continue;
}
//and now I should do some mapping, but don't know how...
}
的問題很簡單:我該怎麼辦呢? :)
yeap ...類似的想法。我只是從商店創建或獲取它,而不是僅應用映射,忽略PK。 Thanx – WooBoo 2010-04-23 11:54:07