public long UpdateEntity(object Entity) { EntityDescriber ed = new EntityDescriber(Entity); if (ed.UniqueKeyProvidedOnEntity() == false && ed.PrimaryKeyProvidedOnEntity() == false) { throw new Exception("Neither a Primary Key nor UniqueKey was provided for the object."); } var Statement = DMLStatementFactory.GetDMLStatementForGenericEntity(_tenant, Entity, DMLStatemtType.Update, null); var ret = (Int32)((IExecuteDML)_dbaccess).Execute(Statement); SqlStatementExecuted?.Invoke(Statement.PreparedStatement, Statement.Variables); return(ret); }
internal static SQLDMLStatement GetDMLStatementForGenericEntity(IDatabaseTenant Tenant, object Entity, DMLStatemtType dMLStatemtType, List <string> querProperytParametersToUse) { List <object> propValues = GetObjectPropertyValues(Entity); List <string> propNames = GetObjectPropertyNames(Entity); List <ISQLDMLStatementVariable> uniqueKeys = null; if (dMLStatemtType == DMLStatemtType.SelectAll && querProperytParametersToUse == null) { uniqueKeys = new List <ISQLDMLStatementVariable> { new SQLDMLStatementVariable { Name = "@Tenant", Value = "TR1" } }; } else if (querProperytParametersToUse == null) { EntityDescriber ed = new EntityDescriber(Entity); bool primaryKeyIdFieldValueSupplied = ed.PrimaryKeyProvidedOnEntity(); if (primaryKeyIdFieldValueSupplied && (dMLStatemtType == DMLStatemtType.Update || dMLStatemtType == DMLStatemtType.Delete)) { uniqueKeys = GetUniqueKeyNameValuePairs(Entity, true, false); } else if (primaryKeyIdFieldValueSupplied == false && (dMLStatemtType == DMLStatemtType.Update || dMLStatemtType == DMLStatemtType.Delete)) { uniqueKeys = GetUniqueKeyNameValuePairs(Entity, false, true); } else { uniqueKeys = GetUniqueKeyNameValuePairs(Entity, false, true); } } else { uniqueKeys = GetFilterNameValuePairs(Entity); } List <ISQLDMLStatementVariable> uniqueKeysFiltered = new List <ISQLDMLStatementVariable>(); if (querProperytParametersToUse != null) { querProperytParametersToUse.Add("Tenant"); foreach (var key in uniqueKeys) { if (querProperytParametersToUse.Contains(key.Name.Replace("@", ""))) { uniqueKeysFiltered.Add(key); } } } else { uniqueKeysFiltered = uniqueKeys; } SQLDMLScripts dmlScripts = new SQLDMLScripts(); return(dmlScripts.GetInsertScriptForTypedEntity(Tenant, Entity, propNames, propValues, dMLStatemtType, uniqueKeysFiltered)); }