コード例 #1
0
        private void insert(DbIdentityRecordInfo info, object data)
        {
            DbFieldInfo primaryKey = info.PrimaryKey;

            if (primaryKey.FieldType == typeof(Guid))
            {
                Guid guid = Guid.NewGuid();
                primaryKey.SetValue(data, guid);

                object[] values = info.GetValues(data, primaryKey.Name, guid);
                Accessor.Insert(info.TableName, values);
            }
            else
            if (!info.IsDbGeneratedPrimaryKey)
            {
                object[] values = info.GetValues(data, primaryKey.Name, primaryKey.GetValue(data));
                Accessor.Insert(info.TableName, values);
            }
            else
            {
                object[] values = info.GetValues(data);
                object   newId  = Accessor.InsertIdentity(info.TableName, primaryKey.Name, values);
                primaryKey.SetValue(data, Convert.ChangeType(newId, primaryKey.FieldType));
            }
        }
コード例 #2
0
        private static void setValue(DbFieldInfo field, object data, object value)
        {
            try
            {
                if (value == DBNull.Value)
                {
                    field.SetValue(data, null);
                }
                else
                {
                    Type type = DbConverter.GetType(field.FieldType);

                    object convertedValue = Convert.ChangeType(value, type);
                    field.SetValue(data, convertedValue);
                }
            }
            catch (Exception ex)
            {
                throw new NdbException("Can't set field value.\r\nField: " + field.Name + "\r\nValue: '" + value + "'\r\nError: " + ex.Message);
            }
        }