假设我有一个内部EF模型:
public class EFModel
{
public int key { get; set; }
public string Name { get; set; }
public int? OptionalId { get; set;}
}
我的外部模型具有相同的数据类型,除了没有Nullable:
public class Extmodel
{
public int key { get; set; }
public string Name { get; set; }
public int OptionalId { get; set; }
}
一般情况下,我必须通过CreateMap
并明确施放:
CreateMap<EfModel,ExtModel>
.ForMember(a => a.OptionalId, b => b.MapFrom(c => (int)c.OptionalId))
.ReverseMap();
但是想象一下拥有一个非常大的数据库,应该有一些方法可以加快速度。我尝试了一个可以在System.Reflection&#39;上工作的辅助函数。和泛型来解决这个问题。
public void MapWrap<T, U>() where T : new()
{
var newT = new T();
var map = CreateMap<T, U>();
foreach (var member in newT.GetType().GetProperties())
{
Type memberType = member.PropertyType;
var nullable = Nullable.GetUnderlyingType(memberType) == null;
var notString = memberType != typeof(string);
if (nullable && notString)
{
map.ForMember(dest => dest.GetType().GetMethod(member.Name),
src => src.MapFrom(
dt => Convert.ChangeType(dt.GetType().GetMethod(member.Name), Nullable.GetUnderlyingType(memberType))));
}
}
map.ReverseMap();
}
假设:
我收到错误&#39;会员的自定义配置仅支持某个类型的顶级个人会员。&#39;我觉得这一切都错了吗?