public string[] DeleteByIds(string typeOfObject, string ids)
{
var currentType = Helper.GetTypesWithUIOMaticAttribute().First(x => x.AssemblyQualifiedName.Contains(typeOfObject));
var tableName = ((TableNameAttribute)Attribute.GetCustomAttribute(currentType, typeof(TableNameAttribute))).Value;
var primaryKeyColum = string.Empty;
var primKeyAttri = currentType.GetCustomAttributes().Where(x => x.GetType() == typeof(PrimaryKeyAttribute));
if (primKeyAttri.Any())
primaryKeyColum = ((PrimaryKeyAttribute)primKeyAttri.First()).Value;
foreach (var prop in currentType.GetProperties())
{
foreach (var attri in prop.GetCustomAttributes(true))
{
if (attri.GetType() == typeof (PrimaryKeyColumnAttribute))
primaryKeyColum = ((PrimaryKeyColumnAttribute)attri).Name ?? prop.Name;
}
}
var uioMaticAttri = (UIOMaticAttribute)Attribute.GetCustomAttribute(currentType, typeof(UIOMaticAttribute));
var db = (Database)DatabaseContext.Database;
if (!string.IsNullOrEmpty(uioMaticAttri.ConnectionStringName))
db = new Database(uioMaticAttri.ConnectionStringName);
//// TODO: Delete with one SQL statement?
//var deletedIds = new List<string>();
//foreach (var idStr in ids.Split(','))
//{
// var id = 0;
// if (int.TryParse(idStr, out id))
// {
// deletedIds.Add(db.Delete(tableName, primaryKeyColum, null, id));
// }
//}
//return deletedIds.ToArray();
string ids2var = "'" + ids.Replace(",", "','") + "'";
string DEL_SQL = @"Delete from {0} where {1} in ({2})";
DEL_SQL = string.Format(DEL_SQL, tableName, primaryKeyColum, ids2var);
db.Execute(DEL_SQL);
return ids.Split(',');
}