static void LoadData(string configFilePath) { FileInfo fileInfo; if (UseEntryAssemblyDirectory) { fileInfo = FileHelper.GetFileInfo(configFilePath, out bool absolute); if (!fileInfo.Exists && !absolute) { fileInfo = new FileInfo(configFilePath); } } else { fileInfo = new FileInfo(configFilePath); } if (fileInfo.Exists) { using (StreamReader reader = fileInfo.OpenText()) { string content = reader.ReadToEnd(); JObject dom = JObject.Parse(content); var section = dom.GetValue("lightDataMapper"); if (section == null) { return; } var optionList = section.ToObject <LightMapperOptions>(); if (optionList != null && optionList.DataTypes != null && optionList.DataTypes.Length > 0) { int typeIndex = 0; foreach (DataTypeSection typeConfig in optionList.DataTypes) { typeIndex++; var typeName = typeConfig.Type; if (typeName == null) { throw new LightDataException(string.Format(SR.ConfigDataTypeNameIsNull, typeIndex)); } var dataType = Type.GetType(typeName, true); var dataTypeInfo = dataType.GetTypeInfo(); var dataTableMap = new DataTableMapperConfig(dataType); var setting = new DataTableMapperSetting(dataTableMap); dataTableMap.TableName = typeConfig.TableName; dataTableMap.IsEntityTable = typeConfig.IsEntityTable.HasValue ? typeConfig.IsEntityTable.Value : true; var configParam = new ConfigParamSet(); var paramConfigs = typeConfig.ConfigParams; if (paramConfigs != null && paramConfigs.Count > 0) { foreach (var paramConfig in paramConfigs) { configParam.SetParamValue(paramConfig.Value, paramConfig.Value); } } dataTableMap.ConfigParams = configParam; var dataFieldConfigs = typeConfig.DataFields; if (dataFieldConfigs != null && dataFieldConfigs.Length > 0) { int fieldIndex = 0; foreach (var fieldConfig in dataFieldConfigs) { fieldIndex++; var fieldName = fieldConfig.FieldName; if (fieldName == null) { throw new LightDataException(string.Format(SR.ConfigDataFieldNameIsNull, typeName, fieldIndex)); } var property = dataTypeInfo.GetProperty(fieldName); if (property == null) { throw new LightDataException(string.Format(SR.ConfigDataFieldIsNotExists, typeName, fieldName)); } object defaultValue; try { defaultValue = CreateDefaultValue(property.PropertyType, fieldConfig.DefaultValue); } catch (Exception ex) { throw new LightDataException(string.Format(SR.ConfigDataFieldLoadError, typeName, fieldName, ex.Message)); } FunctionControl functionControl; try { functionControl = CreateFunctionControl(fieldConfig); } catch (Exception ex) { throw new LightDataException(string.Format(SR.ConfigDataFieldLoadError, typeName, fieldName, ex.Message)); } var dataFieldMap = new DataFieldMapperConfig(fieldName) { Name = fieldConfig.Name, IsPrimaryKey = fieldConfig.IsPrimaryKey, IsIdentity = fieldConfig.IsIdentity, DbType = fieldConfig.DbType, DataOrder = fieldConfig.DataOrder, IsNullable = fieldConfig.IsNullable, DefaultValue = defaultValue, FunctionControl = functionControl }; setting.AddDataFieldMapConfig(fieldName, dataFieldMap); } } var relationFieldConfigs = typeConfig.RelationFields; if (relationFieldConfigs != null && relationFieldConfigs.Length > 0) { int fieldIndex = 0; foreach (var fieldConfig in relationFieldConfigs) { fieldIndex++; if (fieldConfig.RelationPairs != null && fieldConfig.RelationPairs.Length > 0) { var fieldName = fieldConfig.FieldName; if (fieldName == null) { throw new LightDataException(string.Format(SR.ConfigDataFieldNameIsNull, typeName, fieldIndex)); } var property = dataTypeInfo.GetProperty(fieldName); if (property == null) { throw new LightDataException(string.Format(SR.ConfigDataFieldIsNotExists, typeName, fieldName)); } var dataFieldMap = new RelationFieldMapConfig(fieldName); foreach (var pair in fieldConfig.RelationPairs) { dataFieldMap.AddRelationKeys(pair.MasterKey, pair.RelateKey); } setting.AddRelationFieldMapConfig(fieldName, dataFieldMap); } } } settingDict[dataType] = setting; } } } } }