Açıklama özniteliğini almak için enum uzantı yöntemini burada bulabilirsiniz.Yüklenecek bir projeksiyon sırasında AutoMapper kullanarak bir enum açıklamasına nasıl eşlenir?
İştepublic class GetAccountResponse {
public int AccountId {get;set;}
public string Status {get;set;}
}
benim girişimi: Burada
public enum AccountStatus {
[Description("N/A")]
None,
[Description("OPEN")]
Open,
[Description("CLOSED")]
Closed,
[Description("BAD CREDIT")
Problem
}
hedef nesnesidir: Burada
public class Account {
public int AccountId {get;set;}
public int AccountStatusId {get;set;}
}
enum: İşte
public static string GetDescription(this Enum enumeration)
{
if (enumeration == null)
throw new ArgumentNullException();
var value = enumeration.ToString();
var type = enumeration.GetType();
var descriptionAttribute =
(DescriptionAttribute[]) type.GetField(value).GetCustomAttributes(typeof (DescriptionAttribute), false);
return descriptionAttribute.Length > 0 ? descriptionAttribute[0].Description : value;
}
kaynak nesnesidir harita (en son non-statik automappe kullanarak r sürümü). Bunun bir EF gecikmeli projeksiyon sırasında olduğunu unutmayın. İşte
_config = new MapperConfiguration(cfg => cfg.CreateMap<Account, GetAccountsResponse>()
.ForMember(dest => dest.Status,
opts => opts.MapFrom(src => ((AccountStatus) src.AccountStatusId).GetDescription())));
sorgu nerede projeksiyonu bir
IQueryable<Account>
:
query.ProjectToList<GetAccountResponse>(_config);
Bu durum alıyorum:
bu Expression queryable için çözülemiyor