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)); } }
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); } }