protected void InsertDataRow(Class dataClass, DataRow r) { var obj = new ObjectContainer(dataClass); foreach (DataColumn c in r.Table.Columns) { if (!c.AutoIncrement) { var val = r[c]; if (val == DBNull.Value) { val = null; } obj[c.ColumnName] = val; } } ObjectContainerStorage.Insert(obj); r["id"] = obj.ID.Value; }
public void Insert(string tableName, IDictionary <string, IQueryValue> data) { var schema = GetSchema(); var dataClass = schema.FindClassByID(tableName); if (dataClass != null) { var objContainer = new ObjectContainer(dataClass); foreach (var changeEntry in data) { if (!(changeEntry.Value is QConst)) { throw new NotSupportedException( String.Format("{0} value type is not supported", changeEntry.Value.GetType())); } objContainer[changeEntry.Key] = ((QConst)changeEntry.Value).Value; } ObjectContainerStorage.Insert(objContainer); return; } // check for relation table var relation = schema.FindRelationshipByID(tableName); if (relation != null) { long?subjId = null; long?objId = null; foreach (var entry in data) { var valConst = entry.Value as QConst; if (valConst == null) { throw new NotSupportedException( String.Format("Value {0} for {1} is not supported", entry.Value, entry.Key)); } if (entry.Key == "subject_id") { subjId = Convert.ToInt64(((QConst)entry.Value).Value); } else if (entry.Key == "object_id") { objId = Convert.ToInt64(((QConst)entry.Value).Value); } else { throw new ArgumentException(String.Format("{0} does not exist in {1}", entry.Key, tableName)); } } if (!subjId.HasValue) { throw new ArgumentException("subject_id is required"); } if (!objId.HasValue) { throw new ArgumentException("object_id is required"); } ObjectContainerStorage.AddRelation( new ObjectRelation(subjId.Value, relation, objId.Value)); return; } UnderlyingDalc.Insert(tableName, data); }