예제 #1
0
        private DataTable ObjectToDataTable(string tblName, IEnumerable <object> instance)
        {
            RefectorUtility utility              = new RefectorUtility();
            IFileReader     file                 = new XmlFileReader();
            var             assembly             = Assembly.GetExecutingAssembly();
            var             manifestResourceName = assembly.GetManifestResourceNames().First();
            var             parsedContent        = file.Parse <TableClassMapping>(assembly.GetManifestResourceStream(manifestResourceName));
            var             mappedType           = parsedContent.First(x => x.TableName == tblName);
            var             tableType            = utility.GetTypeFromString(mappedType.ClassName, mappedType.AssemblyName);
            DataTable       dataTable            = new DataTable(tblName);

            foreach (PropertyInfo propertyInfo in tableType.GetProperties())
            {
                dataTable.Columns.Add(propertyInfo.Name, propertyInfo.PropertyType);
            }
            foreach (object item in instance)
            {
                var     objeInstance = JsonConvert.DeserializeObject(item.ToString(), tableType);
                DataRow dr           = dataTable.NewRow();
                foreach (PropertyInfo propertyInfo in tableType.GetProperties())
                {
                    dr[propertyInfo.Name] = propertyInfo.GetValue(objeInstance);
                }
                dataTable.Rows.Add(dr);
            }
            return(dataTable);
        }
예제 #2
0
        /// <summary>
        ///This method used for get array list.
        /// </summary>
        /// <param name="spName">pass store processer name</param>
        /// <param name="tableName">pass table name</param>
        /// <param name="lastCheckedDateTime">pass last checked datetime</param>
        /// <param name="className">pass class name</param>
        /// <param name="assemblyName">pass assembly name</param>
        /// <returns></returns>
        private async Task <ArrayList> GetArrayList(string spName, string tableName, DateTime lastCheckedDateTime, string className, string assemblyName)
        {
            RefectorUtility     utility    = new RefectorUtility();
            List <SqlParameter> parameters = new List <SqlParameter>
            {
                new SqlParameter("@TableName", SqlDbType.VarChar)
                {
                    Value = tableName
                },
                new SqlParameter("@LastCheckedDateTime", SqlDbType.DateTime)
                {
                    Value = lastCheckedDateTime
                }
            };
            ArrayList arrayList = new ArrayList();

            using (var dataReader = await ExecuteStoreProcedure(spName, parameters))
            {
                Dictionary <string, string> columnRow = new Dictionary <string, string>();
                //This will initialize dictionary with all the column names
                while (dataReader.Read())
                {
                    for (int i = 0; i < dataReader.FieldCount; i++)
                    {
                        if (columnRow.ContainsKey(dataReader.GetName(i)))
                        {
                            columnRow[dataReader.GetName(i)] = Convert.ToString(dataReader[i]);
                        }
                        else
                        {
                            columnRow.Add(dataReader.GetName(i), Convert.ToString(dataReader[i]));
                        }
                    }
                    var row = utility.ParseColumn(utility.GetTypeFromString(className, assemblyName), columnRow);
                    arrayList.Add(row);
                }
            }
            return(arrayList);
        }
예제 #3
0
        private IEnumerable <string> GetUpdateStatement(string tblName, IEnumerable <object> data)
        {
            RefectorUtility utility              = new RefectorUtility();
            IFileReader     file                 = new XmlFileReader();
            var             assembly             = Assembly.GetExecutingAssembly();
            var             manifestResourceName = assembly.GetManifestResourceNames().First();
            var             parsedContent        = file.Parse <TableClassMapping>(assembly.GetManifestResourceStream(manifestResourceName));
            var             mappedType           = parsedContent.First(x => x.TableName == tblName);
            var             tableType            = utility.GetTypeFromString(mappedType.ClassName, mappedType.AssemblyName);
            string          updateFormat         = "UPDATE [" + tblName + "] SET {0} WHERE Id = {1}";
            List <string>   updateQuery          = new List <string>();
            List <string>   finalstring          = new List <string>();

            foreach (dynamic o in data)
            {
                dynamic objeInstance = JsonConvert.DeserializeObject(o.ToString(), tableType);
                foreach (PropertyInfo propertyInfo in objeInstance.GetType().GetProperties())
                {
                    if (propertyInfo.Name == "Id")
                    {
                        continue;
                    }
                    if (propertyInfo.PropertyType == typeof(DateTime))
                    {
                        dynamic dateTime = propertyInfo.GetValue(objeInstance);
                        updateQuery.Add(string.Format("[{0}] = N'{1}'", propertyInfo.Name, dateTime.ToString("yyyy-MM-dd HH:mm:ss")));
                    }
                    else
                    {
                        updateQuery.Add(string.Format("[{0}] = N'{1}'", propertyInfo.Name, propertyInfo.GetValue(objeInstance)));
                    }
                }
                finalstring.Add(string.Format(updateFormat, string.Join(",", updateQuery), objeInstance.Id));
                updateQuery.Clear();
            }
            return(finalstring);
        }