AutoMapper не может сохранить ваше значение по умолчанию, потому что он даже не знает, что он существует.
.HasDefaultValueSql("((1))");
- это параметр, который EntityFramework использует, когда он создает объект, но в этом случае AutoMapper создает объект, так что информация теряется.
Однако то, что вы могли бы сделать, это применить некоторую пользовательскую логику к вашему отображению, чтобы впоследствии добавить значение по умолчанию. Это будет выглядеть примерно так:
CreateMap<MemberUpdate, Member>()
.AfterMap((memberUpdate, member) =>
member.Active = memberUpdate.Active == default(int) ? 1 : memberUpdate.Active);
Это просто выполняет сопоставление по умолчанию между Member
и MemberUpdate
, а затем впоследствии назначает значение по умолчанию, которое вы хотите для Member
.
В качестве альтернативы, вы могли бы изменить свою модель так, чтобы она имела значение по умолчанию внутри нее, вместо того, чтобы выполнять это назначение внешне, как:
public int Active { get; } = 1;
Хотя я сомневаюсь, что этот вариант будет вам полезен, поскольку вы хотите, чтобы EF справился с этим за вас. Я бы предложил раздеть жестко закодированный 1
в константу и затем использовать эту константу в вашем отображении AutoMapper и в настройке EF.
Надеюсь, это поможет.