Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 利用HasDefaultValueSql的自动映射_C#_Automapper_.net Core 2.2 - Fatal编程技术网

C# 利用HasDefaultValueSql的自动映射

C# 利用HasDefaultValueSql的自动映射,c#,automapper,.net-core-2.2,C#,Automapper,.net Core 2.2,在我的Entity Framework Core 2.2 API项目中,我构建了上下文。因为它表示数据库中的数据,所以我得到如下条目- entity.Property(e => e.Active) .IsRequired() .HasDefaultValueSql("((1))"); 其中,Active是必需的,默认值为1 我还使用AutoMapper映射实体 我的MappingEntity类- public class MappingEntity : Profile {

在我的Entity Framework Core 2.2 API项目中,我构建了上下文。因为它表示数据库中的数据,所以我得到如下条目-

entity.Property(e => e.Active)
    .IsRequired()
    .HasDefaultValueSql("((1))");
其中,
Active
是必需的,默认值为1

我还使用AutoMapper映射实体

我的MappingEntity类-

public class MappingEntity : Profile
{
    public MappingEntity()
    {
        CreateMap<MemberUpdate, Member>();
    }
}

是否有自动映射设置来保留默认值?

自动映射无法保留默认值,因为它甚至不知道它存在

.HasDefaultValueSql(((1))”
是EntityFramework在构建对象时使用的设置,但在本例中,AutoMapper正在构建对象,因此信息丢失

但是,您可以做的是对映射应用一些自定义逻辑,以便在之后添加默认值。它看起来类似于以下内容:

CreateMap<MemberUpdate, Member>()
    .AfterMap((memberUpdate, member) =>
         member.Active = memberUpdate.Active == default(int) ? 1 : memberUpdate.Active); 
尽管我怀疑这个选项对你有用,因为你想让英孚帮你处理这个问题。我建议将硬编码的
1
剥离为某个常量,然后在自动映射和EF设置中使用该常量


希望能有所帮助。

AutoMapper无法保留默认值,因为它甚至不知道它存在

.HasDefaultValueSql(((1))”
是EntityFramework在构建对象时使用的设置,但在本例中,AutoMapper正在构建对象,因此信息丢失

但是,您可以做的是对映射应用一些自定义逻辑,以便在之后添加默认值。它看起来类似于以下内容:

CreateMap<MemberUpdate, Member>()
    .AfterMap((memberUpdate, member) =>
         member.Active = memberUpdate.Active == default(int) ? 1 : memberUpdate.Active); 
尽管我怀疑这个选项对你有用,因为你想让英孚帮你处理这个问题。我建议将硬编码的
1
剥离为某个常量,然后在自动映射和EF设置中使用该常量


希望这能有所帮助。

我可能不太清楚。该映射是否强制映射后的值?如果传入的viewmodel将其设置为不同的值会怎样?不幸的是,在没有看到您的模型的情况下,我不得不做出一些假设。其中之一是,您的传入模型实际上没有这样的属性,但似乎我错了。你能告诉我当传入的viewmodel有值时,预期的行为是什么吗?当传入的模型有该属性时,映射它。如果尚未在传入模型上设置该属性,请使用数据库defaultOk我刚刚在文章中编辑了映射代码来处理该用例。希望有帮助!我可能不太清楚。该映射是否强制映射后的值?如果传入的viewmodel将其设置为不同的值会怎样?不幸的是,在没有看到您的模型的情况下,我不得不做出一些假设。其中之一是,您的传入模型实际上没有这样的属性,但似乎我错了。你能告诉我当传入的viewmodel有值时,预期的行为是什么吗?当传入的模型有该属性时,映射它。如果尚未在传入模型上设置该属性,请使用数据库defaultOk我刚刚在文章中编辑了映射代码来处理该用例。希望有帮助!
public int Active { get; } = 1;