Exemplo n.º 1
0
            /// <summary>
            /// Get fields
            /// </summary>
            /// <param name="serverType">Database server type</param>
            /// <param name="entityType">Entity type</param>
            /// <param name="propertyNames">Property names</param>
            /// <returns>Return properties relation entity fields</returns>
            internal static IEnumerable <EntityField> GetFields(DatabaseServerType serverType, Type entityType, IEnumerable <string> propertyNames)
            {
                if (propertyNames.IsNullOrEmpty())
                {
                    return(Array.Empty <EntityField>());
                }
                var allFields = EntityManager.GetEntityConfiguration(entityType)?.AllFields;

                if (allFields.IsNullOrEmpty())
                {
                    return(Array.Empty <EntityField>());
                }
                DatabaseServerEntityFields.TryGetValue(serverType.GetDatabaseServerEntityFormatKey(entityType), out var entityServerFields);
                List <EntityField> resultFields = new List <EntityField>();

                foreach (var propertyName in propertyNames)
                {
                    if (string.IsNullOrWhiteSpace(propertyName))
                    {
                        continue;
                    }
                    EntityField propertyField = null;
                    entityServerFields?.TryGetValue(propertyName, out propertyField);
                    if (propertyField == null)
                    {
                        allFields.TryGetValue(propertyName, out propertyField);
                    }
                    if (propertyField != null)
                    {
                        resultFields.Add(propertyField);
                    }
                }
                return(resultFields);
            }
Exemplo n.º 2
0
        /// <summary>
        /// Get query fields
        /// </summary>
        /// <param name="serverType">Database server type</param>
        /// <param name="entityType">Entity type</param>
        /// <param name="query">Query object</param>
        /// <returns>Return entity fields</returns>
        public static List <EntityField> GetQueryFields(DatabaseServerType serverType, Type entityType, IQuery query)
        {
            string key = serverType.GetDatabaseServerEntityFormatKey(entityType);

            if (string.IsNullOrWhiteSpace(key))
            {
                return(new List <EntityField>(0));
            }
            DatabaseServerEntityQueryFields.TryGetValue(key, out var fields);
            if (fields.IsNullOrEmpty())
            {
                ConfigureEntity(key, entityType);
                DatabaseServerEntityQueryFields.TryGetValue(key, out fields);
            }
            if (fields.IsNullOrEmpty())
            {
                throw new Exception("empty fields");
            }
            if (query.QueryFields.IsNullOrEmpty() && query.NotQueryFields.IsNullOrEmpty())
            {
                return(fields);
            }
            var queryFields = query.GetActuallyQueryFields(entityType, true, true);

            return(fields.Intersect(queryFields).ToList());
        }
Exemplo n.º 3
0
        /// <summary>
        /// Get fields
        /// </summary>
        /// <param name="serverType">Database server type</param>
        /// <param name="entityType">Entity type</param>
        /// <param name="propertyNames">Property names</param>
        /// <returns>Return properties relation entity fields</returns>
        public static List <EntityField> GetFields(DatabaseServerType serverType, Type entityType, IEnumerable <string> propertyNames)
        {
            if (propertyNames.IsNullOrEmpty())
            {
                return(new List <EntityField>(0));
            }
            var propertyFields = propertyNames.Select <string, EntityField>(p => p).ToList();
            var key            = serverType.GetDatabaseServerEntityFormatKey(entityType);

            if (string.IsNullOrWhiteSpace(key))
            {
                return(propertyFields);
            }
            DatabaseServerEntityFields.TryGetValue(key, out var allFields);
            if (allFields.IsNullOrEmpty())
            {
                ConfigureEntity(key, entityType);
                DatabaseServerEntityFields.TryGetValue(key, out allFields);
                if (allFields.IsNullOrEmpty())
                {
                    return(propertyFields);
                }
            }
            for (var p = 0; p < propertyFields.Count; p++)
            {
                var propertyField = propertyFields[p];
                if (allFields.TryGetValue(propertyField.PropertyName, out var nowField) && nowField != null)
                {
                    propertyFields[p] = nowField;
                }
            }
            return(propertyFields);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Configure entity object name
 /// </summary>
 /// <param name="serverType">Database server type</param>
 /// <param name="entityType">Entity type</param>
 /// <param name="objectName">Object name</param>
 internal static void ConfigureEntityObjectName(DatabaseServerType serverType, Type entityType, string objectName)
 {
     if (entityType == null || string.IsNullOrWhiteSpace(objectName))
     {
         return;
     }
     DatabaseServerEntityObjectNames[serverType.GetDatabaseServerEntityFormatKey(entityType)] = objectName;
 }
Exemplo n.º 5
0
        /// <summary>
        /// Configure entity fields
        /// </summary>
        /// <param name="serverType">Database server type</param>
        /// <param name="entityType">Entity type</param>
        /// <param name="fields">Fields</param>
        /// <param name="cover">Whether conver current fields</param>
        public static void ConfigureEntityFields(DatabaseServerType serverType, Type entityType, IEnumerable <EntityField> fields, bool cover = true)
        {
            if (entityType == null)
            {
                return;
            }
            var key = serverType.GetDatabaseServerEntityFormatKey(entityType);

            ConfigureEntityFields(key, entityType, fields, cover);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Configure entity object name
        /// </summary>
        /// <param name="serverType">Database server type</param>
        /// <param name="entityType">Entity type</param>
        /// <param name="objectName">Object name</param>
        /// <param name="cover">Whether cover current object name</param>
        public static void ConfigureEntityObjectName(DatabaseServerType serverType, Type entityType, string objectName, bool cover = true)
        {
            if (entityType == null)
            {
                return;
            }
            var key = serverType.GetDatabaseServerEntityFormatKey(entityType);

            ConfigureEntityObjectName(key, objectName, cover);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Get edit fields
        /// </summary>
        /// <param name="serverType">Database server type</param>
        /// <param name="entityType">Entity type</param>
        /// <returns>Return entity edit fields</returns>
        public static List <EntityField> GetEditFields(DatabaseServerType serverType, Type entityType)
        {
            string key = serverType.GetDatabaseServerEntityFormatKey(entityType);

            if (string.IsNullOrWhiteSpace(key))
            {
                return(new List <EntityField>(0));
            }
            DatabaseServerEntityEditFields.TryGetValue(key, out var fields);
            if (fields.IsNullOrEmpty())
            {
                ConfigureEntity(key, entityType);
                DatabaseServerEntityEditFields.TryGetValue(key, out fields);
            }
            return(fields ?? new List <EntityField>(0));
        }
Exemplo n.º 8
0
        /// <summary>
        /// Get entity object name
        /// </summary>
        /// <param name="serverType">Database server type</param>
        /// <param name="entityType">Entity type</param>
        /// <param name="defaultName">Default name</param>
        /// <returns>Return Entity object name</returns>
        public static string GetEntityObjectName(DatabaseServerType serverType, Type entityType, string defaultName = "")
        {
            string key = serverType.GetDatabaseServerEntityFormatKey(entityType);

            if (string.IsNullOrWhiteSpace(key))
            {
                return(defaultName);
            }
            DatabaseServerEntityObjectNames.TryGetValue(key, out var cacheObjectName);
            if (string.IsNullOrWhiteSpace(cacheObjectName))
            {
                ConfigureEntity(key, entityType);
                DatabaseServerEntityObjectNames.TryGetValue(key, out cacheObjectName);
                cacheObjectName = string.IsNullOrWhiteSpace(cacheObjectName) ? defaultName : cacheObjectName;
            }
            return(cacheObjectName ?? string.Empty);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Configure server type entity
        /// </summary>
        /// <param name="serverType">Database server type</param>
        /// <param name="entityType">Entity type</param>
        /// <param name="entityConfiguration">Entity configuration</param>
        static void ConfigureDatabaseServerEntity(DatabaseServerType serverType, Type entityType, DataEntityConfiguration entityConfiguration, bool cover = true)
        {
            if (entityConfiguration == null)
            {
                return;
            }
            string key = serverType.GetDatabaseServerEntityFormatKey(entityType);

            if (string.IsNullOrWhiteSpace(key))
            {
                return;
            }
            //Configure object name
            ConfigureEntityObjectName(key, entityConfiguration.TableName, cover);
            //Configure fields
            ConfigureEntityFields(key, entityType, entityConfiguration.Fields, cover);
        }
Exemplo n.º 10
0
            /// <summary>
            /// Configure entity fields
            /// </summary>
            /// <param name="serverType">Database server type</param>
            /// <param name="entityType">Entity type</param>
            /// <param name="fields">Fields</param>
            internal static void ConfigureEntityFields(DatabaseServerType serverType, Type entityType, IEnumerable <EntityField> fields)
            {
                if (entityType == null || fields.IsNullOrEmpty())
                {
                    return;
                }
                var key = serverType.GetDatabaseServerEntityFormatKey(entityType);

                DatabaseServerEntityFields.TryGetValue(key, out var nowFields);
                nowFields ??= new Dictionary <string, EntityField>();
                foreach (var field in fields)
                {
                    if (field == null)
                    {
                        continue;
                    }
                    nowFields[field.PropertyName] = field;
                }
                DatabaseServerEntityFields[key] = nowFields;
                InitDatabaseEntityConfiguration(serverType, entityType.GUID);
            }
Exemplo n.º 11
0
        /// <summary>
        /// Get default field
        /// </summary>
        /// <param name="serverType">Database server type</param>
        /// <param name="entityType">Entity type</param>
        /// <returns>Return default field</returns>
        public static EntityField GetDefaultField(DatabaseServerType serverType, Type entityType)
        {
            string key = serverType.GetDatabaseServerEntityFormatKey(entityType);

            if (string.IsNullOrWhiteSpace(key))
            {
                return(string.Empty);
            }
            DatabaseServerEntityQueryFields.TryGetValue(key, out var fields);
            if (fields.IsNullOrEmpty())
            {
                ConfigureEntity(key, entityType);
                DatabaseServerEntityQueryFields.TryGetValue(key, out fields);
            }
            EntityField field = null;

            if (fields?.Count > 0)
            {
                field = fields[0];
            }
            field = field ?? string.Empty;
            return(field);
        }
Exemplo n.º 12
0
        /// <summary>
        ///  Get field
        /// </summary>
        /// <param name="serverType">Database server type</param>
        /// <param name="entityType">Entity type</param>
        /// <param name="propertyName">Property name</param>
        /// <returns>Return property relation entity field</returns>
        public static EntityField GetField(DatabaseServerType serverType, Type entityType, string propertyName)
        {
            if (string.IsNullOrWhiteSpace(propertyName))
            {
                return(string.Empty);
            }
            string key = serverType.GetDatabaseServerEntityFormatKey(entityType);

            if (string.IsNullOrWhiteSpace(key))
            {
                return(string.Empty);
            }
            DatabaseServerEntityFields.TryGetValue(key, out var allFields);
            if (allFields.IsNullOrEmpty())
            {
                //configure entity
                ConfigureEntity(key, entityType);
                DatabaseServerEntityFields.TryGetValue(key, out allFields);
            }
            EntityField field = null;

            allFields?.TryGetValue(propertyName, out field);
            return(field ?? propertyName);
        }