示例#1
0
        /// <summary>
        /// Creat model.
        /// </summary>
        /// <param name="modelBuilder">model builder</param>
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            try
            {
                base.OnModelCreating(modelBuilder);
                OnUserModelCreating(modelBuilder);
                OnAcvtivityModelCreating(modelBuilder);
                OnNewsModelCreating(modelBuilder);
                OnOccurrenceModelCreating(modelBuilder);
                OnRessourceModelCreating(modelBuilder);
                OnCountryModelCreating(modelBuilder);
                OnSectionModelCreating(modelBuilder);
                OnNewsletterModelCreating(modelBuilder);
                OnAboutModelCreating(modelBuilder);
                OnStepModelCreating(modelBuilder);

                modelBuilder.HasDefaultSchema(ConfigurationManagerHelper.GetAppSettingsToString(Constant.OmsDefaultSchema, string.Empty));
                modelBuilder.Properties().Where(p => p.PropertyType == typeof(string) && p.GetCustomAttributes(typeof(MaxLengthAttribute), false).Length == 0).Configure(p => p.HasMaxLength(int.MaxValue));
                var entityMethod   = typeof(DbModelBuilder).GetMethod("Entity");
                var activeServices = ServiceActivation.GetAllActivatedServices().ToList();
                foreach (var service in activeServices)
                {
                    var entityAssembly = ServiceSettings.GetEntityAssembly(service);
                    var dependencies   = ServiceSettings.GetAllServiceDependencies(service).ToSystemTypeList(entityAssembly);
                    foreach (var type in dependencies)
                    {
                        if (entityMethod != null)
                        {
                            entityMethod.MakeGenericMethod(type).Invoke(modelBuilder, new object[] { });
                        }
                    }
                    var configs = ServiceSettings.GetAllServiceConfigurationDependencies(service).ToSystemTypeList(entityAssembly);
                    foreach (var type in configs)
                    {
                        dynamic configurationInstance = Activator.CreateInstance(type);
                        modelBuilder.Configurations.Add(configurationInstance);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ArgumentNullException(ex.Message);
            }
        }
        /// <summary>
        /// The overrided load method.
        /// </summary>
        public override void Load()
        {
            // gets activated services
            var activeServices = ServiceActivation.GetAllActivatedServices().ToList();

            foreach (var service in activeServices)
            {
                // gets list of adapters for service
                var serviceAssemblyName = ServiceSettings.GetServiceAssembly(service, Configuration.Section.Enum.AssemblyType.Service);
                if (!string.IsNullOrEmpty(serviceAssemblyName))
                {
                    var serviceAssembly = Assembly.Load(serviceAssemblyName);
                    var adapters        = ServiceSettings.GetAllServiceAdapters(service, Configuration.Section.Enum.AssemblyType.Service);
                    foreach (var adapter in adapters)
                    {
                        var _class     = serviceAssembly.GetType(adapter.Key);
                        var _interface = serviceAssembly.GetType(adapter.Value);
                        Bind(_interface).To(_class);
                    }
                }

                // gets list of adapters for web Api service
                var webApiServiceAssemblyName = ServiceSettings.GetServiceAssembly(service, Configuration.Section.Enum.AssemblyType.WebApiService);
                if (string.IsNullOrEmpty(webApiServiceAssemblyName))
                {
                    continue;
                }
                {
                    var webApiServiceAssembly = Assembly.Load(webApiServiceAssemblyName);
                    var adapters = ServiceSettings.GetAllServiceAdapters(service, Configuration.Section.Enum.AssemblyType.WebApiService);
                    foreach (var adapter in adapters)
                    {
                        var _class     = webApiServiceAssembly.GetType(adapter.Key);
                        var _interface = webApiServiceAssembly.GetType(adapter.Value);
                        Bind(_interface).To(_class);
                    }
                }
            }
        }