Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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));
        }