Example #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);
        }
Example #2
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);
        }