Raven.Bundles.UniqueConstraints.Util.EscapeUniqueValue C# (CSharp) Method

EscapeUniqueValue() public static method

public static EscapeUniqueValue ( object value, bool caseInsensitive = false ) : string
value object
caseInsensitive bool
return string
		public static string EscapeUniqueValue(object value, bool caseInsensitive = false)
		{
			var stringToEscape = value.ToString();
            if (caseInsensitive)
		        stringToEscape = stringToEscape.ToLowerInvariant();
			var escapeDataString = Uri.EscapeDataString(stringToEscape);
			if (stringToEscape == escapeDataString)
				return stringToEscape;
			// to avoid issues with ids, we encode the entire thing as safe Base64
			return Convert.ToBase64String(Encoding.UTF8.GetBytes(stringToEscape));
		}

Usage Example

コード例 #1
0
        public override void OnPut(string key, RavenJObject document, RavenJObject metadata, TransactionInformation transactionInformation)
        {
            if (key.StartsWith("Raven/"))
            {
                return;
            }

            var entityName = metadata.Value <string>(Constants.RavenEntityName) + "/";

            var properties = metadata.Value <RavenJArray>(Constants.EnsureUniqueConstraints);

            if (properties == null || properties.Length <= 0)
            {
                return;
            }

            var oldDoc = Database.Get(key, transactionInformation);

            if (oldDoc == null)
            {
                return;
            }

            foreach (var property in metadata.Value <RavenJArray>(Constants.EnsureUniqueConstraints))
            {
                var constraint = Util.GetConstraint(property);

                var newProp = document[constraint.PropName];

                // Handle Updates in the constraint since it changed
                var prefix = "UniqueConstraints/" + entityName + constraint.PropName + "/";

                var oldProp = oldDoc.DataAsJson[constraint.PropName];

                string[] oldUniqueValues;
                if (!Util.TryGetUniqueValues(oldProp, out oldUniqueValues))
                {
                    continue;
                }

                string[] newUniqueValues;
                if (Util.TryGetUniqueValues(newProp, out newUniqueValues))
                {
                    var join = (from oldValue in oldUniqueValues
                                join newValue in newUniqueValues
                                on oldValue equals newValue
                                select oldValue);

                    if (join.Count() == oldUniqueValues.Count())
                    {
                        continue;
                    }
                }

                foreach (var oldUniqueValue in oldUniqueValues)
                {
                    Database.Delete(prefix + Util.EscapeUniqueValue(oldUniqueValue, constraint.CaseInsensitive), null, transactionInformation);
                }
            }
        }
All Usage Examples Of Raven.Bundles.UniqueConstraints.Util::EscapeUniqueValue