public DbCommandSpec GetInsertCommand(IEntity entity, int?parentId) { var command = new DbCommandSpec(); var columnProperties = propertyMaps.Where(x => x is IPropertyMapWithColumn <T>).Cast <IPropertyMapWithColumn <T> >(); var writableColumns = columnProperties.Where(x => !x.SetterIsPrivate).ToList(); var columnNames = writableColumns.Select(x => x.ColumnName).ToList(); var paramterNames = writableColumns.Select(x => x.ColumnName).ToList(); if (!string.IsNullOrEmpty(ParentColumnName)) { columnNames.Add(ParentColumnName); paramterNames.Add(ParentColumnName); command.AddParameter(ParentColumnName, parentId); } var sql = string.Format("insert into {0} ({1}) values ({2})", TableName, string.Join(",", columnNames.ToArray()), string.Join(",", paramterNames.Select(x => SessionFactory.DEFAULT_SQL_PARAMETER_PREFIX + x).ToArray())); command.SetCommandText(sql); foreach (var map in writableColumns) { command.AddParameter(map.ColumnName, map.GetColumnValue(entity)); } return(command); }
public DbCommandSpec GetUpdateCommand(IEntity entity, int?parentId) { var command = new DbCommandSpec(); var columnProperties = propertyMaps .Where(x => x is IPropertyMapWithColumn <T>) .Cast <IPropertyMapWithColumn <T> >() .ToList(); var setPairs = columnProperties .Where(x => x.ColumnName != "Id") .Select(x => string.Format("{0}={1}{0}", x.ColumnName, SessionFactory.DEFAULT_SQL_PARAMETER_PREFIX)) .ToList(); if (!string.IsNullOrEmpty(ParentColumnName)) { setPairs.Add(string.Format("{0}={1}{0}", ParentColumnName, SessionFactory.DEFAULT_SQL_PARAMETER_PREFIX)); command.AddParameter(ParentColumnName, parentId); } var sql = string.Format("update {0} set {1} where Id = {2}Id", TableName, string.Join(",", setPairs.ToArray()), SessionFactory.DEFAULT_SQL_PARAMETER_PREFIX); command.AddParameter("Id", entity.Id); command.SetCommandText(sql); foreach (var map in columnProperties) { command.AddParameter(map.ColumnName, map.GetColumnValue(entity)); } return(command); }
public DbCommandSpec GetFindCommand(IList <Parameter> parameters, IList <string> condtions) { var command = new DbCommandSpec(); foreach (var parameter in parameters) { command.AddParameters(parameter); } var sql = BaseSelectSql; if (condtions.Count > 0) { sql += " where " + string.Join(" and ", condtions.ToArray()); } command.SetCommandText(sql); return(command); }