AutoMapper 8.0 missing GetPropertyMaps











up vote
0
down vote

favorite












Prior to AutoMapper 8.0, I used this code to find a property mapping by string, example: entity model has property named "currency_id" and DTO has property named "currency". I have defined bi-directional mapping in AutoMapper, and I used this code to find source/target property relat



    public static string GetDestinationPropertyFor<TSrc, TDst>(IMapper IMapper, string sourceProperty)
{
var mapper = AutoMapper.IMapper.ConfigurationProvider;

// TSrc = source generic type
// TDst = destination generic type
var map = mapper.FindTypeMapFor<TSrc, TDst>();

var propertyMap = map.GetPropertyMaps()
.FirstOrDefault(pm =>
pm.SourceMember.Name == sourceProperty
);


return propertyMap.DestinationProperty.Name;
}


In AutoMapper Profile:



        this.CreateMap<EntityModels.contact, DTO.contact>()
.ForMember(m => m.currency, src => src.MapFrom(f => f.currency_id))
;

this.CreateMap<DTO.contact, EntityModels.contact>()
.ForMember(m => m.currency_id, src => src.MapFrom(f => f.currency))
;


When I called my method like this:



var _dboField = GetDestinationPropertyFor<DTO.contact, EntityModels.contact>(this.mapper, "currency");

Console.WriteLine(_dboField);
// output should be "currency_id"


After upgrading to AutoMapper 8.0 I got this error at build:



'TypeMap' does not contain a definition for 'GetPropertyMaps' and no accessible extension method 'GetPropertyMaps' accepting a first argument of type 'TypeMap' could be found (are you missing a using directive or an assembly reference?)



What are replacements for GetPropertyMaps in AutoMapper 8.0?



Thanks!










share|improve this question






















  • But why do you need that destination property? Maybe there is a better way to do what you want.
    – Lucian Bargaoanu
    1 hour ago










  • This is a workaround for OData bugs. API accepts arguments like property names from DTO but has to 'reflect' it to Entity model. For example: $orderby=currency should build Expression like .OrderBy(o => o.currency_id). I have this already done, what is the problem is missing feature in AutoMapper
    – Luke1988
    1 hour ago










  • That is done by mapping expressions. What you're doing is a hack. MemberMaps is what you want. But really, that code is not how you solve the problem.
    – Lucian Bargaoanu
    1 hour ago










  • Thanks. Could you give me a direction? What should I be looking for?
    – Luke1988
    40 mins ago










  • github.com/AutoMapper/AutoMapper.Extensions.ExpressionMapping
    – Lucian Bargaoanu
    35 mins ago















up vote
0
down vote

favorite












Prior to AutoMapper 8.0, I used this code to find a property mapping by string, example: entity model has property named "currency_id" and DTO has property named "currency". I have defined bi-directional mapping in AutoMapper, and I used this code to find source/target property relat



    public static string GetDestinationPropertyFor<TSrc, TDst>(IMapper IMapper, string sourceProperty)
{
var mapper = AutoMapper.IMapper.ConfigurationProvider;

// TSrc = source generic type
// TDst = destination generic type
var map = mapper.FindTypeMapFor<TSrc, TDst>();

var propertyMap = map.GetPropertyMaps()
.FirstOrDefault(pm =>
pm.SourceMember.Name == sourceProperty
);


return propertyMap.DestinationProperty.Name;
}


In AutoMapper Profile:



        this.CreateMap<EntityModels.contact, DTO.contact>()
.ForMember(m => m.currency, src => src.MapFrom(f => f.currency_id))
;

this.CreateMap<DTO.contact, EntityModels.contact>()
.ForMember(m => m.currency_id, src => src.MapFrom(f => f.currency))
;


When I called my method like this:



var _dboField = GetDestinationPropertyFor<DTO.contact, EntityModels.contact>(this.mapper, "currency");

Console.WriteLine(_dboField);
// output should be "currency_id"


After upgrading to AutoMapper 8.0 I got this error at build:



'TypeMap' does not contain a definition for 'GetPropertyMaps' and no accessible extension method 'GetPropertyMaps' accepting a first argument of type 'TypeMap' could be found (are you missing a using directive or an assembly reference?)



What are replacements for GetPropertyMaps in AutoMapper 8.0?



Thanks!










share|improve this question






















  • But why do you need that destination property? Maybe there is a better way to do what you want.
    – Lucian Bargaoanu
    1 hour ago










  • This is a workaround for OData bugs. API accepts arguments like property names from DTO but has to 'reflect' it to Entity model. For example: $orderby=currency should build Expression like .OrderBy(o => o.currency_id). I have this already done, what is the problem is missing feature in AutoMapper
    – Luke1988
    1 hour ago










  • That is done by mapping expressions. What you're doing is a hack. MemberMaps is what you want. But really, that code is not how you solve the problem.
    – Lucian Bargaoanu
    1 hour ago










  • Thanks. Could you give me a direction? What should I be looking for?
    – Luke1988
    40 mins ago










  • github.com/AutoMapper/AutoMapper.Extensions.ExpressionMapping
    – Lucian Bargaoanu
    35 mins ago













up vote
0
down vote

favorite









up vote
0
down vote

favorite











Prior to AutoMapper 8.0, I used this code to find a property mapping by string, example: entity model has property named "currency_id" and DTO has property named "currency". I have defined bi-directional mapping in AutoMapper, and I used this code to find source/target property relat



    public static string GetDestinationPropertyFor<TSrc, TDst>(IMapper IMapper, string sourceProperty)
{
var mapper = AutoMapper.IMapper.ConfigurationProvider;

// TSrc = source generic type
// TDst = destination generic type
var map = mapper.FindTypeMapFor<TSrc, TDst>();

var propertyMap = map.GetPropertyMaps()
.FirstOrDefault(pm =>
pm.SourceMember.Name == sourceProperty
);


return propertyMap.DestinationProperty.Name;
}


In AutoMapper Profile:



        this.CreateMap<EntityModels.contact, DTO.contact>()
.ForMember(m => m.currency, src => src.MapFrom(f => f.currency_id))
;

this.CreateMap<DTO.contact, EntityModels.contact>()
.ForMember(m => m.currency_id, src => src.MapFrom(f => f.currency))
;


When I called my method like this:



var _dboField = GetDestinationPropertyFor<DTO.contact, EntityModels.contact>(this.mapper, "currency");

Console.WriteLine(_dboField);
// output should be "currency_id"


After upgrading to AutoMapper 8.0 I got this error at build:



'TypeMap' does not contain a definition for 'GetPropertyMaps' and no accessible extension method 'GetPropertyMaps' accepting a first argument of type 'TypeMap' could be found (are you missing a using directive or an assembly reference?)



What are replacements for GetPropertyMaps in AutoMapper 8.0?



Thanks!










share|improve this question













Prior to AutoMapper 8.0, I used this code to find a property mapping by string, example: entity model has property named "currency_id" and DTO has property named "currency". I have defined bi-directional mapping in AutoMapper, and I used this code to find source/target property relat



    public static string GetDestinationPropertyFor<TSrc, TDst>(IMapper IMapper, string sourceProperty)
{
var mapper = AutoMapper.IMapper.ConfigurationProvider;

// TSrc = source generic type
// TDst = destination generic type
var map = mapper.FindTypeMapFor<TSrc, TDst>();

var propertyMap = map.GetPropertyMaps()
.FirstOrDefault(pm =>
pm.SourceMember.Name == sourceProperty
);


return propertyMap.DestinationProperty.Name;
}


In AutoMapper Profile:



        this.CreateMap<EntityModels.contact, DTO.contact>()
.ForMember(m => m.currency, src => src.MapFrom(f => f.currency_id))
;

this.CreateMap<DTO.contact, EntityModels.contact>()
.ForMember(m => m.currency_id, src => src.MapFrom(f => f.currency))
;


When I called my method like this:



var _dboField = GetDestinationPropertyFor<DTO.contact, EntityModels.contact>(this.mapper, "currency");

Console.WriteLine(_dboField);
// output should be "currency_id"


After upgrading to AutoMapper 8.0 I got this error at build:



'TypeMap' does not contain a definition for 'GetPropertyMaps' and no accessible extension method 'GetPropertyMaps' accepting a first argument of type 'TypeMap' could be found (are you missing a using directive or an assembly reference?)



What are replacements for GetPropertyMaps in AutoMapper 8.0?



Thanks!







.net-core automapper






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 3 hours ago









Luke1988

14119




14119












  • But why do you need that destination property? Maybe there is a better way to do what you want.
    – Lucian Bargaoanu
    1 hour ago










  • This is a workaround for OData bugs. API accepts arguments like property names from DTO but has to 'reflect' it to Entity model. For example: $orderby=currency should build Expression like .OrderBy(o => o.currency_id). I have this already done, what is the problem is missing feature in AutoMapper
    – Luke1988
    1 hour ago










  • That is done by mapping expressions. What you're doing is a hack. MemberMaps is what you want. But really, that code is not how you solve the problem.
    – Lucian Bargaoanu
    1 hour ago










  • Thanks. Could you give me a direction? What should I be looking for?
    – Luke1988
    40 mins ago










  • github.com/AutoMapper/AutoMapper.Extensions.ExpressionMapping
    – Lucian Bargaoanu
    35 mins ago


















  • But why do you need that destination property? Maybe there is a better way to do what you want.
    – Lucian Bargaoanu
    1 hour ago










  • This is a workaround for OData bugs. API accepts arguments like property names from DTO but has to 'reflect' it to Entity model. For example: $orderby=currency should build Expression like .OrderBy(o => o.currency_id). I have this already done, what is the problem is missing feature in AutoMapper
    – Luke1988
    1 hour ago










  • That is done by mapping expressions. What you're doing is a hack. MemberMaps is what you want. But really, that code is not how you solve the problem.
    – Lucian Bargaoanu
    1 hour ago










  • Thanks. Could you give me a direction? What should I be looking for?
    – Luke1988
    40 mins ago










  • github.com/AutoMapper/AutoMapper.Extensions.ExpressionMapping
    – Lucian Bargaoanu
    35 mins ago
















But why do you need that destination property? Maybe there is a better way to do what you want.
– Lucian Bargaoanu
1 hour ago




But why do you need that destination property? Maybe there is a better way to do what you want.
– Lucian Bargaoanu
1 hour ago












This is a workaround for OData bugs. API accepts arguments like property names from DTO but has to 'reflect' it to Entity model. For example: $orderby=currency should build Expression like .OrderBy(o => o.currency_id). I have this already done, what is the problem is missing feature in AutoMapper
– Luke1988
1 hour ago




This is a workaround for OData bugs. API accepts arguments like property names from DTO but has to 'reflect' it to Entity model. For example: $orderby=currency should build Expression like .OrderBy(o => o.currency_id). I have this already done, what is the problem is missing feature in AutoMapper
– Luke1988
1 hour ago












That is done by mapping expressions. What you're doing is a hack. MemberMaps is what you want. But really, that code is not how you solve the problem.
– Lucian Bargaoanu
1 hour ago




That is done by mapping expressions. What you're doing is a hack. MemberMaps is what you want. But really, that code is not how you solve the problem.
– Lucian Bargaoanu
1 hour ago












Thanks. Could you give me a direction? What should I be looking for?
– Luke1988
40 mins ago




Thanks. Could you give me a direction? What should I be looking for?
– Luke1988
40 mins ago












github.com/AutoMapper/AutoMapper.Extensions.ExpressionMapping
– Lucian Bargaoanu
35 mins ago




github.com/AutoMapper/AutoMapper.Extensions.ExpressionMapping
– Lucian Bargaoanu
35 mins ago

















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














 

draft saved


draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371494%2fautomapper-8-0-missing-getpropertymaps%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















 

draft saved


draft discarded



















































 


draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371494%2fautomapper-8-0-missing-getpropertymaps%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

Npm cannot find a required file even through it is in the searched directory