protected virtual string CreateNoUpdateLogMessage(object bean, IBeanMetaData bmd) { StringBuilder builder = new StringBuilder(); builder.Append("skip UPDATE: table="); builder.Append(bmd.TableName); int size = bmd.PrimaryKeySize; for (int i = 0; i < size; i++) { if (i == 0) { builder.Append(", key{"); } else { builder.Append(", "); } string keyName = bmd.GetPrimaryKey(i); builder.Append(keyName); builder.Append("="); builder.Append(bmd.GetPropertyTypeByColumnName(keyName) .PropertyInfo.GetValue(bean, null)); if (i == size - 1) { builder.Append("}"); } } return(builder.ToString()); }
protected void AddAutoUpdateWhereBindVariables(ArrayList varList, ArrayList varTypeList, Object bean) { IBeanMetaData bmd = BeanMetaData; for (int i = 0; i < bmd.PrimaryKeySize; ++i) { IPropertyType pt = bmd.GetPropertyTypeByColumnName(bmd.GetPrimaryKey(i)); PropertyInfo pi = pt.PropertyInfo; varList.Add(pi.GetValue(bean, null)); varTypeList.Add(pi.PropertyType); } if (bmd.HasVersionNoPropertyType) { IPropertyType pt = bmd.VersionNoPropertyType; PropertyInfo pi = pt.PropertyInfo; varList.Add(pi.GetValue(bean, null)); varTypeList.Add(pi.PropertyType); } if (bmd.HasTimestampPropertyType) { IPropertyType pt = bmd.TimestampPropertyType; PropertyInfo pi = pt.PropertyInfo; varList.Add(pi.GetValue(bean, null)); varTypeList.Add(pi.PropertyType); } }
protected override void SetupRelationKeyValue(RelationRowCreationResource res) { IRelationPropertyType rpt = res.RelationPropertyType; IBeanMetaData bmd = rpt.BeanMetaData; DBMeta dbmeta = FindDBMeta(bmd.BeanType, bmd.TableName); for (int i = 0; i < rpt.KeySize; ++i) { String columnName = rpt.GetMyKey(i) + res.BaseSuffix; if (!res.ContainsColumnName(columnName)) { continue; } if (!res.HasRowInstance()) { Object row; if (dbmeta != null) { row = dbmeta.NewEntity(); } else { row = NewRelationRow(rpt); } res.Row = row; } if (!res.ContainsRelKeyValueIfExists(columnName)) { continue; } Object value = res.ExtractRelKeyValue(columnName); if (value == null) { // basically no way // because this is not called if the referred value // is null (then it must be no relation key) // @see InternalBeanListMetaDataResultSetHandler continue; } String yourKey = rpt.GetYourKey(i); IPropertyType pt = bmd.GetPropertyTypeByColumnName(yourKey); PropertyInfo pi = pt.PropertyInfo; pi.SetValue(res.Row, value, null); continue; } }