public virtual string GetCascadeDeleteSql(PropertyInfo oneToManyProp) { StringBuilder sb = new StringBuilder(); sb.Append("delete from "); sb.Append(oneToManyProp.PropertyType.GetGenericArguments()[0].GetTableAttribute().Name); sb.Append(" where "); sb.Append(oneToManyProp.GetOneToManyAttribute().InverseForeignKey); sb.Append("=?"); return sb.ToString(); }
public virtual string GetDeleteItemSql(PropertyInfo oneToManyProp, int countLeft) { StringBuilder sb = new StringBuilder(); Type elementType = oneToManyProp.PropertyType.GetGenericArguments()[0]; sb.Append("delete from "); sb.Append(elementType.GetTableAttribute().Name); sb.Append(" where "); sb.Append(oneToManyProp.GetOneToManyAttribute().InverseForeignKey); sb.Append("=?"); if (countLeft > 0) { sb.Append(" and "); sb.Append(elementType.GetIdProperty().GetColumnAttribute().Name); sb.Append(" not in (" + "?, ".Repeat(countLeft)); sb.Remove(sb.Length - 2, 2); sb.Append(")"); } return sb.ToString(); }
public virtual string GetLoadOneToManyPropertySql(PropertyInfo prop, bool enableLazy, out Dictionary<string, string> resultMap) { StringBuilder sb = new StringBuilder(); sb.Append(prop.GetOneToManyAttribute().InverseForeignKey); sb.Append("=?"); return GetSelectSql(prop.PropertyType.GetGenericArguments()[0], enableLazy, out resultMap, sb.ToString()); }
public virtual string GetUpdateForeignKeySql(PropertyInfo oneToManyProp, int countLeft) { if (countLeft <= 0) throw new ArgumentOutOfRangeException("countLeft应大于0。", countLeft, "countLeft"); StringBuilder sb = new StringBuilder(); Type elementType = oneToManyProp.PropertyType.GetGenericArguments()[0]; sb.Append("update "); sb.Append(elementType.GetTableAttribute().Name); sb.Append(" set "); sb.Append(oneToManyProp.GetOneToManyAttribute().InverseForeignKey); sb.Append("=? where "); sb.Append(elementType.GetIdProperty().GetColumnAttribute().Name); sb.Append(" in (" + "?, ".Repeat(countLeft)); sb.Remove(sb.Length - 2, 2); sb.Append(")"); return sb.ToString(); }
private static bool NeedProxy(PropertyInfo prop, bool enableLazy, bool enforceLazy) { ColumnAttribute col = prop.GetColumnAttribute(); if (col != null && col.LazyLoad && enableLazy) { return true; } ManyToOneAttribute manyToOne = prop.GetManyToOneAttribute(); if (manyToOne != null && (manyToOne.LazyLoad && enableLazy || enforceLazy)) { return true; } OneToManyAttribute oneToMany = prop.GetOneToManyAttribute(); if (oneToMany != null && (oneToMany.LazyLoad && enableLazy || enforceLazy)) { return true; } ManyToManyAttribute manyToMany = prop.GetManyToManyAttribute(); if (manyToMany != null && (manyToMany.LazyLoad && enableLazy || enforceLazy)) { return true; } return false; }