private static void CreateTableDescriptor() { var result = new Dictionary <Type, TableDescriptor>(); // 构建表描述符。 TableKinds.ForEach(p => { var textName = Settings.Get <string>(p.Value); HelperTools.SplitTableNames(textName).ForEach(name => { var entityType = ConvertToEntityType(name); var tableName = ConvertToTableName(entityType); if (result.ContainsKey(entityType)) { throw new ArgumentException(string.Format("{0} 重复配置。", name)); } result[entityType] = new TableDescriptor { EntityType = entityType, Name = tableName, TableKind = p.Key }; }); }); TableDescriptors = new ReadOnlyDictionary <Type, TableDescriptor>(result); }
public static DbConfiguration GetOrCreateDbConfiguration(string dbSourceName, bool validateSchema) { if (!Acl.Data.Configuration.DbConfiguration.Items.TryGetValue(dbSourceName, out DbConfiguration cfg)) { // 获取 exe.config 中的连接字符串。 var connectSettings = ConfigurationManager.ConnectionStrings.OfType <ConnectionStringSettings>() .Where(p => p.Name == dbSourceName).FirstOrDefault(); if (connectSettings != null) { cfg = DbConfiguration.Configure(dbSourceName); } else { var dataSrc = DataSources.Values.Where(p => p.Name == dbSourceName).FirstOrDefault(); if (dataSrc == null) { throw new Exception(string.Format("没有找到 DataSource={0} 的配置 。", dbSourceName)); } var urlFixed = dataSrc.Url; if (dataSrc.Driver.Contains("SQLite")) { urlFixed = HelperTools.FixSQLiteDbUrl(dataSrc.Url); } cfg = DbConfiguration.Configure(urlFixed, dataSrc.Driver, dbSourceName); } // 设置表名复数策略 cfg.SetMappingConversion(MappingConversion.Plural); // 添加DB表映射。 if (DataSources.ContainsKey(dbSourceName)) { DataSources[dbSourceName].TableDescriptors.ForEach(p => cfg.ModelBuilder.AddClass(p.Value.EntityType)); } // 验证Schema if (validateSchema) { cfg.ModelBuilder.ValidateSchema(); } } return(cfg); }