コード例 #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);
            }
        }