private IClassMapper GetVirtualClassMapper(IClassMapper mapper) { var assemblyBuilder = ReflectionHelper.CreateAssemblyBuilder(mapper.EntityType.Assembly.GetName().Name); var moduleBuilder = ReflectionHelper.CreateModuleBuilder(assemblyBuilder, "VirtualModules.dll"); var tbEntity = ReflectionHelper.CreateTypeBuilder(moduleBuilder, mapper.EntityType.Name, mapper.EntityType); var virtualEntity = ReflectionHelper.CreateVirtualType(tbEntity, mapper.EntityType); var tbMapper = ReflectionHelper.CreateTypeBuilder(moduleBuilder, mapper.EntityType.Name + "Map", mapper.GetType()); ReflectionHelper.CreateMapType(tbMapper, virtualEntity, mapper.GetType()); var virtualMapInstance = Configuration.GetMap(virtualEntity); object[] argsP = { virtualEntity }; virtualMapInstance.GetType().GetMethod("SetEntityType").Invoke(virtualMapInstance, argsP); return(virtualMapInstance); }
/// <inheritdoc /> public string GetColumnName(IClassMapper classMapper, string propertyName, bool includeAlias, string alias) { var propertyMap = classMapper.Properties.SingleOrDefault(p => p.Name.Equals(propertyName, StringComparison.InvariantCultureIgnoreCase)) ?? throw new ArgumentException($"Could not find '{propertyName}' in class mapper '{classMapper.GetType().Name}'."); return(GetColumnName(classMapper, propertyMap, includeAlias)); }