/// <summary> /// Applies the value and options of an action parameter to the underlying implementation. /// </summary> /// <param name="param"></param> public void ApplyParameter(PersistenceParameter param) { // Keep a copy for later reference param = param.Clone(); // ............................... // Check for parameter conflicts if (_appliedParameters == null) { _appliedParameters = new Dictionary <string, PersistenceParameter>(); } else { PersistenceParameter existing; if (_appliedParameters.TryGetValue(param.Name, out existing) && existing.Options != null) { if (param.Options == null) { if (existing.Options != null) { param.Options = existing.Options.Clone(); } } else if (!Object.Equals(existing.Options, param.Options)) { throw new QueryTemplateException(String.Format("Persistence parameter conflict: '{0}' is declared more than once but with different options.", param.Name)); } } } _appliedParameters[param.Name] = param; OnApplyParameter(param); }
protected abstract void OnApplyParameter(PersistenceParameter param);