Beispiel #1
0
        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;
        }
Beispiel #2
0
        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);
        }