Ejemplo n.º 1
0
        /// <summary>
        /// Register entity mapping from annonated types
        /// </summary>
        /// <param name="sessionFactory"></param>
        /// <param name="assembly"></param>
        public static void MapEntitiesWithAnnonations(this ISessionFactory sessionFactory, Assembly assembly)
        {
            Expect.IsNotNull(sessionFactory, nameof(sessionFactory));
            Expect.IsNotNull(assembly, nameof(assembly));

            var genericMethod = typeof(MappingFactory).GetMethod("CreateEntityMappingFromAnnonations", BindingFlags.Public | BindingFlags.Static);

            Expect.IsNotNull(genericMethod, nameof(genericMethod));

            var annonatedTypes = assembly.GetExportedTypes()
                                 .Where(IsAnnonatedEntityType)
                                 .ToArray();

            foreach (var type in annonatedTypes)
            {
                var createMethod = genericMethod.MakeGenericMethod(type);
                var mapper       = createMethod.Invoke(null, new object[0]);
                sessionFactory.RegisterMapper(type, mapper);
            }
        }