我新的AutoMapper。我想將DbGeography類型的屬性(如PlayerFromCache.Position)映射到PlayerFromDb.Position,這兩種類型的玩家。我不斷收到一個錯誤,所以我崩潰了的代碼最簡單的版本:Automapper與DbGeography結果異常:「在WellKnownValue ......」
Mapper.Initialize(cfg =>
{
cfg.CreateMap<DbGeography, DbGeography>();
});
var pos1 = DbGeography.PointFromText($"POINT(11.0 12.0)", DbGeography.DefaultCoordinateSystemId);
var pos2 = DbGeography.PointFromText($"POINT(22.0 23.0)", DbGeography.DefaultCoordinateSystemId);
Mapper.Map(pos1, pos2);
這將導致異常:
的WellKnownValue財產的目的是支持序列化和反序列化和不應該直接設置。
我被卡住了。任何幫助,將不勝感激。
當我忽略WellKnownValue,則映射不起作用:
Mapper.Initialize(cfg =>
{
cfg.CreateMap<DbGeography, DbGeography>()
.ForMember(x => x.WellKnownValue, opt => opt.Ignore()); ;
});
映射POS2仍然是22/23
請在Lucian的回答下看到我的評論。 – Tillito
@Tillito我在一個最小化的獨立程序中驗證了AutoMapper的行爲與我描述的方式相同,而且我無法知道您發佈的評論+答案與您提問的問題相關。你確定你最終沒有發佈一個與你在此問的問題不同的問題嗎? – hvd
是的,你是對的:事實證明,問題並不那麼簡單。它也包含實體框架。你認爲我應該刪除這個問題嗎?另一方面,我的答案可以幫助其他人嘗試使用dbgeography字段緩存對象,並像我一樣使用EF和Automapper ... – Tillito