/// <summary> /// Maps the entity part from package part. /// </summary> /// <param name="entityPartPackagePart">The entity part package part.</param> /// <param name="includeData">if set to <c>true</c> include data with the entity part.</param> /// <returns>EntityPart.</returns> public EntityPart MapEntityPartFromPackagePart(PackagePart entityPartPackagePart, bool includeData) { //Get the entity part metadata and deserialize. EntityPartMetadata metadata = GetEntityPartMetadata(entityPartPackagePart); var result = new EntityPart { Category = metadata.Category, Created = metadata.Created, CreatedBy = User.GetUser(metadata.CreatedBy), EntityId = new Guid(entityPartPackagePart.Package.PackageProperties.Identifier), ETag = metadata.Etag, Modified = metadata.Modified, ModifiedBy = User.GetUser(metadata.ModifiedBy), Name = metadata.Name, }; if (includeData) { using (var fs = entityPartPackagePart.GetStream()) { var bytes = fs.ReadToEnd(); result.Data = Encoding.UTF8.GetString(bytes); } } return(result); }
private EntityPart CreateEntityPart(string partName, EntityPartMetadata entityPartMetadata, string data) { if (partName.IsNullOrWhiteSpace()) { throw new ArgumentNullException("partName"); } if (entityPartMetadata == null) { throw new ArgumentNullException("entityPartMetadata"); } var entityPartUri = GetEntityPartUriFromEntityPartName(partName); if (m_package.PartExists(entityPartUri)) { throw new InvalidOperationException("An entity part with the specified name already exists within the entity."); } var entityPart = m_package.CreatePart(entityPartUri, Data.Constants.EntityPartContentType); //Copy the data to the entity part using (var fileStream = new StringStream(data)) { fileStream.CopyTo(entityPart.GetStream()); } //Create a relationship between the default entity part and the entity part. var defaultEntityPart = GetDefaultEntityPartPackagePart(); defaultEntityPart.CreateRelationship(entityPartUri, TargetMode.Internal, Data.Constants.EntityPartRelationship); //Create the entity part metadata object. var entityPartMetadataUri = GetEntityPartMetadataUriFromEntityPartName(partName); var entityPartMetadataPart = m_package.CreatePart(entityPartMetadataUri, Data.Constants.EntityPartContentType); var metadata = JsonConvert.SerializeObject(entityPartMetadata, new EtagJsonConverter()); //Copy the metadata to the entity part metadata part. using (var fileStream = new StringStream(metadata)) { fileStream.CopyTo(entityPartMetadataPart.GetStream()); } //Finally, create the relationship between the entity part and its metadata -- not that we couldn't have found it by convention. entityPart.CreateRelationship(entityPartMetadataUri, TargetMode.Internal, Data.Constants.EntityPartMetadataRelationship); return(MapEntityPartFromPackagePart(entityPart)); }
/// <summary> /// Creates a new Entity Part in the Entity Package. /// </summary> /// <param name="partName"></param> /// <param name="category"></param> /// <param name="data"></param> /// <returns></returns> public EntityPart CreateEntityPart(string partName, string category, string data) { var entityPartMetadata = new EntityPartMetadata { Category = category, Created = DateTime.Now, CreatedBy = User.GetCurrentUser().LoginName, Etag = Etag.Empty, Modified = DateTime.Now, ModifiedBy = User.GetCurrentUser().LoginName, Name = partName, Properties = new Dictionary <string, string>(), }; return(CreateEntityPart(partName, entityPartMetadata, data)); }