Raven.Client.AdvancedSessionExtensions.AddCascadeDeleteReference C# (CSharp) Method

AddCascadeDeleteReference() public static method

Adds one or more document keys to an entity's cascade delete metadata. Requires the cascade delete bundle on the server.
public static AddCascadeDeleteReference ( this session, object entity ) : void
session this The Raven advanced session.
entity object The entity to update.
return void
        public static void AddCascadeDeleteReference(this IAdvancedDocumentSessionOperations session, object entity, params string[] documentKeys)
        {
            var metadata = session.GetMetadataFor(entity);
            if (metadata == null)
                throw new InvalidOperationException("The entity must be tracked in the session before calling this method.");

            if (documentKeys.Length == 0)
                throw new ArgumentException("At least one document key must be specified.");

            const string metadataKey = "Raven-Cascade-Delete-Documents";

            RavenJToken token;
            if (!metadata.TryGetValue(metadataKey, out token))
                token = new RavenJArray();

            var list = (RavenJArray)token;
            foreach (var documentKey in documentKeys.Where(key => !list.Contains(key)))
                list.Add(documentKey);

            metadata[metadataKey] = list;
        }
    }