C# 自动映射值类型到SqlType的转换
我正在一些漂亮、轻量级的POCO和一些大而重的数据感知对象之间建立映射,这些对象是遗留体系结构的一部分 数据对象的属性使用SqlTypes,因此我将data.Role.Name作为SqlString,而将Poco.Role.Name作为string 自动映射设置如下: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
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表达式,但可以使用自定义映射器进行转换。对于一个简单的转换,您可能不会看到这两种方法之间有太大的区别,但我没有那么仔细地研究它。