Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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# 自动映射值类型到SqlType的转换_C#_Automapper_Sql Types - Fatal编程技术网

C# 自动映射值类型到SqlType的转换

C# 自动映射值类型到SqlType的转换,c#,automapper,sql-types,C#,Automapper,Sql Types,我正在一些漂亮、轻量级的POCO和一些大而重的数据感知对象之间建立映射,这些对象是遗留体系结构的一部分 数据对象的属性使用SqlTypes,因此我将data.Role.Name作为SqlString,而将Poco.Role.Name作为string 自动映射设置如下: Mapper.CreateMap<Role, Data.Role>() .ForMember(dest => dest.Role_ID, opt => opt.Ma

我正在一些漂亮、轻量级的POCO和一些大而重的数据感知对象之间建立映射,这些对象是遗留体系结构的一部分

数据对象的属性使用SqlTypes,因此我将data.Role.Name作为SqlString,而将Poco.Role.Name作为string

自动映射设置如下:

Mapper.CreateMap<Role, Data.Role>()
    .ForMember(dest => dest.Role_ID, 
                opt => opt.MapFrom(src=>src.ID));

对于该成员,您应该执行以下操作:

.ForMember(d => d.Name, opt => opt.MapFrom(s => new SqlString(s.Name));

对于该成员,您应该执行以下操作:

.ForMember(d => d.Name, opt => opt.MapFrom(s => new SqlString(s.Name));

我想你可以用类型转换器。看看这篇文章:


我想你可以使用类型转换器。看看这篇文章:


或者您可以使用
constructUsing
方法

Mapper.CreateMap<String, SqlString>().ConstructUsing(s => new SqlString(s));
Mapper.CreateMap().ConstructUsing(s=>newsqlstring(s));

采用这种方法将使用构造函数转换所有字符串、SqlString对,因此您不需要特定的
.ForMember
映射。

或者您可以使用
constructUsing
方法

Mapper.CreateMap<String, SqlString>().ConstructUsing(s => new SqlString(s));
Mapper.CreateMap().ConstructUsing(s=>newsqlstring(s));

采用这种方法将使用构造函数转换所有字符串、SqlString对,因此您不需要特定的
.ForMember
映射。

我自己也没有尝试过,但您看过自定义类型转换器吗?我正在查看自定义类型转换器,谢谢!:我自己没有试过,但是你看过自定义类型转换器吗?我正在查看自定义类型转换器,谢谢!:汉克斯。我用它来表示不完全匹配的字段(ID->Role\u ID),但是在这个项目中要映射的对象太多了,对每个字段都这样做是不切实际的,所以我认为granaker的建议将是解决这个问题的方法。谢谢。我用它来表示不完全匹配的字段(ID->Role\u ID),但是在这个项目中要映射的对象太多了,对每个字段都这样做是不切实际的,所以我认为granaker的建议将是解决这个问题的方法。谢谢-我想这正是我需要的。这应该可以让我设置一次string->sqlstring的定义映射,并让automapper在任何地方应用它。谢谢-我想这正是我需要的。这应该让我一次性设置string->sqlstring的已定义映射,并让automapper在任何地方应用它。除了需要lambda之外,这与ConvertUsing基本相同吗?
ConstructUsing
指定用于实例化目标对象的构造函数。ConvertUsing虽然也可以接受lambda表达式,但可以使用自定义映射器进行转换。对于一个简单的转换,您可能不会看到这两种方法之间有太大的区别,但我没有仔细研究过。除了需要lambda之外,这与ConvertUsing基本相同吗?
ConstructUsing
指定用于实例化目标对象的构造函数。ConvertUsing虽然也可以接受lambda表达式,但可以使用自定义映射器进行转换。对于一个简单的转换,您可能不会看到这两种方法之间有太大的区别,但我没有那么仔细地研究它。