public void Fill(DatabaseTable <T> db, Dictionary <string, object> param = null) { if (tables.Count == 0) { fillAllTables(); } db.Clear(); DatabaseTable <T> tab = tables[db.TableName] as DatabaseTable <T>; IEnumerable <T> res = null; if (param != null) { foreach (var p in param) { res = tab.Where((r) => { return(r[p.Key].Equals(p.Value == null ? 0 : p.Value)); }); } } else { res = tab; } foreach (var r in res) { db.Add(r); } }
public TDtoType Add(TDtoType dto) { var entity = Converter.ToEntity(dto); var addedEntity = DatabaseTable.Add(entity); VirtualWorkDatabase.SaveChanges(); return(Converter.ToDto(addedEntity)); }
internal void fillInner(DatabaseTable <T> db) { db.Clear(); DatabaseTable <Shifts> shift = new DatabaseTable <Shifts>(); string path = ""; string fileName = ""; if (DataProviderFactory.settings.Count != 0) { path = DataProviderFactory.settings["path"].ToString(); fileName = Path.Combine(path, db.TableName + ".json"); } else { path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); string dir = Path.Combine(path, "ShiftData"); fileName = Path.Combine(dir, db.TableName + ".json"); } using (StreamReader r = new StreamReader(fileName)) { string json = r.ReadToEnd(); JavaScriptSerializer jss = new JavaScriptSerializer(); Dictionary <string, Object> table = jss.Deserialize <Dictionary <string, Object> >(json); string tableName = table["TableName"] as string; ArrayList records = table["Records"] as ArrayList; List <string> flds = null; foreach (Dictionary <string, object> rec in records) { T record = (T)Activator.CreateInstance(typeof(T), new object[] { db }); if (flds == null) { flds = record.DataFields; } db.Fields = flds; for (int i = 0; i < flds.Count; i++) { object val = rec[flds[i]]; PropertyInfo prop = record.GetType().GetProperty(flds[i]); prop.SetValue(record, (val), null); } db.Add(record); } } }
public void Fill(DatabaseTable <T> db, Dictionary <string, object> param = null) { string sql; db.Clear(); var props = typeof(T).GetProperties(); string columns = "SELECT "; ArrayList arrayOfJoins = new ArrayList(); string FirstTable = typeof(T).ToString().Substring(typeof(T).ToString().IndexOf('.') + 1); FirstTable = FirstTable.ToString().Substring(FirstTable.ToString().IndexOf('.') + 1); String NameOfJoined = ""; String ForeignKey = ""; String ForeignTableName = ""; List <Tuple <String, String, String> > Joining = new List <Tuple <string, string, string> >(); foreach (var prop in props) { var CA = prop.GetCustomAttribute(typeof(ShiftDbData), false); if (CA != null) { var refe = prop.GetCustomAttribute(typeof(ReferenceData), false); if (refe == null) { string column = prop.Name; columns += (FirstTable + "." + column + ", "); } else { ReferenceData da = refe as ReferenceData; if (da != null) { NameOfJoined = da.TableName; ForeignKey = da.ForeignKey; ForeignTableName = da.ForeignTableName; Joining.Add(new Tuple <String, String, String>(da.TableName, da.ForeignKey, da.ForeignTableName)); } string joinedColumn = prop.ToString().Substring(prop.ToString().IndexOf(' ') + 1); columns += (NameOfJoined + "." + joinedColumn + ", "); arrayOfJoins.Add(joinedColumn); } } } columns = columns.Substring(0, columns.Length - 2); columns += (" FROM " + FirstTable); if (arrayOfJoins != null) { foreach (var r in Joining) { columns += (" LEFT OUTER JOIN " + r.Item1 + " ON " + r.Item1 + "." + r.Item2 + " = " + (r.Item3 == "" ? FirstTable : r.Item3) + "." + r.Item2); } } if (param != null && param.Count >= 1) { columns += " WHERE "; foreach (var p in param) { if (p.Value == null) { columns += p.Key + " is null "; } else { columns += p.Key + " = @" + p.Key.Split(".".ToCharArray()).Last(); } } } sql = columns; using (SqlConnection conn = new SqlConnection(ConnectionString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(sql, conn)) { if (param != null) { foreach (var par in param) { if (par.Value != null) { cmd.Parameters.AddWithValue(par.Key.Split(".".ToCharArray()).Last(), par.Value); } } } using (SqlDataReader sr = cmd.ExecuteReader()) { if (db.Fields == null) { db.Fields = new List <string>(); for (int i = 0; i < sr.FieldCount; i++) { db.Fields.Add(sr.GetName(i)); } } while (sr.Read()) { T record = (T)Activator.CreateInstance(typeof(T), new object[] { db }); for (int i = 0; i < sr.FieldCount; i++) { object val = sr[i]; PropertyInfo prop = record.GetType().GetProperty(db.Fields[i]); prop.SetValue(record, (val == DBNull.Value?null:val), null); } db.Add(record); } } } } }