/// <summary>
        /// Adds a range of <see cref="DomainObject"/> instances to this collection, calling <see cref="Add"/> for each single item.
        /// </summary>
        /// <param name="domainObjects">The domain objects to add.</param>
        /// <exception cref="ArgumentNullException">
        /// The <paramref name="domainObjects"/> parameter is <see langword="null"/>.<para>- or -</para>
        /// The range contains a <see langword="null"/> element.
        /// </exception>
        /// <exception cref="ArgumentException">
        /// The range contains a duplicate element.<para>- or -</para>
        /// An element in the range is not of type <see cref="RequiredItemType"/> or one of its derived types.
        /// </exception>
        /// <exception cref="System.NotSupportedException">The collection is read-only.</exception>
        /// <exception cref="DataManagement.ClientTransactionsDifferException">
        ///   An element in the range belongs to a <see cref="ClientTransaction"/> that is different from the <see cref="ClientTransaction"/>
        ///   managing this collection.
        ///   This applies only to <see cref="DomainObjectCollection"/>s that represent a relation.
        /// </exception>
        public void AddRange(IEnumerable domainObjects)
        {
            ArgumentUtility.CheckNotNull("domainObjects", domainObjects);
            this.CheckNotReadOnly("Cannot add items to a read-only collection.");

            _dataStrategy.AddRangeAndCheckItems(domainObjects.Cast <DomainObject>(), RequiredItemType);
        }