/// <summary>
        /// Get the schema description.
        /// </summary>
        /// <param name="astrSchemaName"></param>
        /// <returns></returns>
        public Ms_Description GetSchemaDescription(string astrSchemaName)
        {
            var schemaDescription = new Ms_Description();

            try
            {
                using (var command = Database.GetDbConnection().CreateCommand())
                {
                    command.CommandText = SqlQueryConstant.GetSchemaMsDescription.Replace("@schemaName", "'" + astrSchemaName + "'");
                    Database.OpenConnection();
                    using (var reader = command.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                schemaDescription.desciption = reader.GetString(0);
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                // ignored
            }

            return(schemaDescription);
        }
        public Ms_Description LoadERDiagramWithSelectedTables(string istrdbName, string istrServerName, string istrsqlmodule)
        {
            var result = new Ms_Description();

            //var sqlmodule =applicationDbContext.databaseModule.Where(
            //     x => x.DatabaseName.Contains(istrdbName) &&
            //     x.ServerName.Contains(istrServerName) &&
            //     x.DbModuleName.Contains(istrsqlmodule)

            //     ).FirstOrDefault() ;
            // if (sqlmodule.IsNotNull())
            // {
            //     var alstOfSelectedTables = sqlmodule.tables.Split(';').Where(x => x.IsNotNullOrEmpty()).ToList();
            //     var newSelectedTables = new List<string>();
            //     alstOfSelectedTables.ForEach(x =>
            //     {
            //         newSelectedTables.Add(x.Split('.')[1]);
            //     });
            //     result.desciption = !istrServerName.IsNullOrEmpty()
            //         ? SrvDatabaseInfo.GetERDiagram(_hostingEnv.WebRootPath, istrdbName, istrServerName, null, newSelectedTables)
            //         : SrvDatabaseInfo.GetERDiagram(_hostingEnv.WebRootPath, istrdbName.Split('/')[0],
            //             istrdbName.Split('/')[1], null, newSelectedTables);
            // }

            return(result);
        }
        /// <summary>
        ///Get  User defined data type description
        /// </summary>
        /// <param name="astrTypeName"></param>
        /// <returns></returns>
        public Ms_Description GetUsedDefinedDataTypeExtendedProperties(string astrTypeName)
        {
            var lUserDefinedDataTypeDescription = new Ms_Description();

            try
            {
                using (var lDbConnection = Database.GetDbConnection())
                {
                    var command = lDbConnection.CreateCommand();
                    command.CommandText = SqlQueryConstant.GetUsedDefinedDataTypeExtendedProperties.Replace("@SchemaName", "'" + astrTypeName.Split('.')[0] + "'").Replace("@TypeName", "'" + astrTypeName.Split('.')[1] + "'");
                    Database.OpenConnection();
                    using (var reader = command.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                lUserDefinedDataTypeDescription = new Ms_Description
                                {
                                    desciption = reader.SafeGetString(0)
                                }
                            }
                        }
                        ;
                    }
                }
            }
            catch (Exception)
            {
                // ignored
            }

            return(lUserDefinedDataTypeDescription);
        }
        public Ms_Description GetERDiagram(string istrdbName, string istrServerName, string istrSchemaName)
        {
            var result = new Ms_Description();

            //if (istrSchemaName.Equals("All"))
            //    result.desciption = !istrServerName.IsNullOrEmpty()
            //        ? SrvDatabaseInfo.GetERDiagram(_hostingEnv.WebRootPath, istrdbName, istrServerName, null)
            //        : SrvDatabaseInfo.GetERDiagram(_hostingEnv.WebRootPath, istrdbName.Split('/')[0],
            //            istrdbName.Split('/')[1], null);
            //else
            //    result.desciption = !istrServerName.IsNullOrEmpty()
            //        ? SrvDatabaseInfo.GetERDiagram(_hostingEnv.WebRootPath, istrdbName, istrServerName, istrSchemaName)
            //        : SrvDatabaseInfo.GetERDiagram(_hostingEnv.WebRootPath, istrdbName.Split('/')[0],
            //            istrdbName.Split('/')[1], istrSchemaName);


            return(result);
        }
        public Ms_Description deleteERDiagramWithSelectedTables(string istrdbName, string istrServerName, string istrsqlmodule)
        {
            var result = new Ms_Description();

            //var sqlmodule = applicationDbContext.databaseModule.Where(
            //     x => x.DatabaseName.Contains(istrdbName) &&
            //     x.ServerName.Contains(istrServerName) &&
            //     x.DbModuleName.Contains(istrsqlmodule)

            //     ).FirstOrDefault();
            //if (sqlmodule.IsNotNull())
            //{
            //    applicationDbContext.databaseModule.Remove(sqlmodule);
            //    applicationDbContext.SaveChanges();
            //}

            return(result);
        }
        public Ms_Description SaveERDiagramWithSelectedTables(string istrdbName, string istrServerName, string SelectedTables, string istrsqlmodule)
        {
            var result = new Ms_Description();

            //DatabaseModule databaseModule = new DatabaseModule();
            //databaseModule.DatabaseName = istrdbName;
            //databaseModule.ServerName = istrServerName;
            //databaseModule.tables = SelectedTables;
            //databaseModule.DbModuleName = istrsqlmodule;
            //if (!applicationDbContext.databaseModule
            //    .Where(x => x.DatabaseName.Contains(istrdbName) && x.ServerName.Contains(istrServerName) && x.DbModuleName.Contains(istrsqlmodule))
            //    .Any())
            //{
            //    applicationDbContext.databaseModule.Add(databaseModule);
            //    applicationDbContext.SaveChanges();
            //    result.desciption = "Module save successfully ";
            //}
            //else
            //{
            //    result.desciption = "There is already same name module is existing in database";
            //}
            return(result);
        }
        public Ms_Description GetERDiagramWithSelectedTables(string istrdbName, string istrServerName, string istrSchemaName, string SelectedTables)
        {
            var alstOfSelectedTables = SelectedTables.Split(';').Where(x => x.IsNotNullOrEmpty()).ToList();
            var newSelectedTables    = new List <string>();

            alstOfSelectedTables.ForEach(x => {
                newSelectedTables.Add(x.Split('.')[1]);
            });
            var result = new Ms_Description();

            //if (istrSchemaName.Equals("All"))
            //    result.desciption = !istrServerName.IsNullOrEmpty()
            //        ? SrvDatabaseInfo.GetERDiagram(_hostingEnv.WebRootPath, istrdbName, istrServerName, null, newSelectedTables)
            //        : SrvDatabaseInfo.GetERDiagram(_hostingEnv.WebRootPath, istrdbName.Split('/')[0],
            //            istrdbName.Split('/')[1], null, newSelectedTables);
            //else
            //    result.desciption = !istrServerName.IsNullOrEmpty()
            //        ? SrvDatabaseInfo.GetERDiagram(_hostingEnv.WebRootPath, istrdbName, istrServerName, istrSchemaName, newSelectedTables)
            //        : SrvDatabaseInfo.GetERDiagram(_hostingEnv.WebRootPath, istrdbName.Split('/')[0],
            //            istrdbName.Split('/')[1], istrSchemaName, newSelectedTables);


            return(result);
        }