protected virtual void GetUpdateCollectionPropertyStatements(object obj, IPropertyMap propertyMap, ArrayList sqlAndParamsList, IList stillDirty) { IObjectManager om = m_SqlEngineManager.Context.ObjectManager; IList newList = (IList) om.GetPropertyValue(obj, propertyMap.Name); IList oldList = (IList) om.GetOriginalPropertyValue(obj, propertyMap.Name); SqlStatementAndDbParameters sqlAndParams; string sql; IList parameters; if (!(propertyMap.ReferenceType == ReferenceType.None)) { foreach (object value in newList) { if (om.GetObjectStatus(value) == ObjectStatus.UpForCreation) { if (!(stillDirty.Contains(propertyMap))) stillDirty.Add(propertyMap); return; } } } if (oldList != null) { foreach (object value in oldList) { if (!(newList.Contains(value))) { sqlAndParams = new SqlStatementAndDbParameters() ; parameters = new ArrayList() ; sql = GetRemoveCollectionValueStatement(obj, propertyMap, value, parameters); sqlAndParams.SqlStatement = sql; sqlAndParams.DbParameters = parameters; sqlAndParamsList.Add(sqlAndParams); } } } if (newList != null) { foreach (object value in newList) { if (!(oldList.Contains(value))) { sqlAndParams = new SqlStatementAndDbParameters() ; parameters = new ArrayList() ; sql = GetInsertCollectionValueStatement(obj, propertyMap, value, parameters); sqlAndParams.SqlStatement = sql; sqlAndParams.DbParameters = parameters; sqlAndParamsList.Add(sqlAndParams); } } } if (stillDirty.Contains(propertyMap)) stillDirty.Remove(propertyMap); }
protected virtual void GetInsertCollectionPropertyStatements(object obj, IPropertyMap propertyMap, ArrayList sqlAndParamsList, IList stillDirty) { IObjectManager om = m_SqlEngineManager.Context.ObjectManager; IListManager lm = m_SqlEngineManager.Context.ListManager; IList newList = (IList) om.GetPropertyValue(obj, propertyMap.Name); string sql = ""; IList parameters; SqlStatementAndDbParameters sqlAndParams; if (!(propertyMap.ReferenceType == ReferenceType.None)) { foreach (object value in newList) { if (om.GetObjectStatus(value) == ObjectStatus.UpForCreation) { stillDirty.Add(propertyMap); return; } } } foreach (object value in newList) { parameters = new ArrayList() ; sqlAndParams = new SqlStatementAndDbParameters() ; sql = (GetInsertCollectionValueStatement(obj, propertyMap, value, parameters)); sqlAndParams.SqlStatement = sql; sqlAndParams.DbParameters = parameters; sqlAndParamsList.Add(sqlAndParams); } }