/// <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 }
/// <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 }