Exemplo n.º 1
0
        /// <summary>
        ///     Serializes an entity reference.
        /// </summary>
        /// <param name="entityReference">
        ///     The entity reference.
        /// </param>
        /// <param name="entityType">
        ///     The entity type.
        /// </param>
        /// <param name="entity">
        ///     The entity.
        /// </param>
        /// <returns>
        ///     <c>true</c> if no further encoding is required, otherwise <c>false</c>.
        /// </returns>
        private bool SerializeEntityReference(EntityReference entityReference, Type entityType, object entity)
        {
            var isRoot = ReferenceEquals(this.root, entity);
            var key    = this.serializingEntity(isRoot, entityReference, entityType, entity);

            if (!isRoot)
            {
                if (key == null)
                {
                    bool generated;
                    key = entityReference.GetKeyFromEntity(entity, out generated);
                    if (generated)
                    {
                        throw new SerializationException(string.Format(CultureInfo.InvariantCulture,
                                                                       @"Entity key has not been set for type {0}", entityType));
                    }
                }

                if (this.entityContext.StrictStaticTableBinding)
                {
                    if (this.entityContext.StrictStaticColumnBinding)
                    {
                        this.WriteEntityRow(entityReference, key);
                    }
                    else
                    {
                        this.WriteEntityKey(entityReference, key);
                    }
                }
                else
                {
                    this.WriteEntityReference(entityReference, key);
                }

                return(true);
            }

            return(key == null); // cancel further serialization
        }
Exemplo n.º 2
0
        /// <summary>
        /// Serializes an entity reference.
        /// </summary>
        /// <param name="entityReference">
        /// The entity reference.
        /// </param>
        /// <param name="entityType">
        /// The entity type.
        /// </param>
        /// <param name="entity">
        /// The entity.
        /// </param>
        /// <returns>
        /// <c>true</c> if no further encoding is required, otherwise <c>false</c>.
        /// </returns>
        private bool SerializeEntityReference(EntityReference entityReference, Type entityType, object entity)
        {
            var isRoot = ReferenceEquals(this.root, entity);
            var key = this.serializingEntity(isRoot, entityReference, entityType, entity);
            if (!isRoot)
            {
                if (key == null)
                {
                    bool generated;
                    key = entityReference.GetKeyFromEntity(entity, out generated);
                    if (generated)
                    {
                        throw new SerializationException(string.Format(CultureInfo.InvariantCulture, @"Entity key has not been set for type {0}", entityType));
                    }
                }

                if (this.entityContext.StrictStaticTableBinding)
                {
                    if (this.entityContext.StrictStaticColumnBinding)
                    {
                        this.WriteEntityRow(entityReference, key);
                    }
                    else
                    {
                        this.WriteEntityKey(entityReference, key);
                    }
                }
                else
                {
                    this.WriteEntityReference(entityReference, key);
                }

                return true;
            }

            return key == null; // cancel further serialization
        }