/// <summary> /// Adds an entity, assumes a valid transaction is running /// </summary> /// <param name="toWrite"></param> internal void AddEntity(IPersistEntity toWrite) { var ms = new MemoryStream(); var bw = new BinaryWriter(ms); toWrite.WriteEntity(bw, Model.Metadata); var expressType = Model.Metadata.ExpressType(toWrite); AddEntity(toWrite.EntityLabel, expressType.TypeId, expressType.GetIndexedValues(toWrite), ms.ToArray(), expressType.IndexedClass); }
/// <summary> /// Writes the in memory data of the entity to a stream /// </summary> /// <param name = "entityStream"></param> /// <param name = "entityWriter"></param> /// <param name = "item"></param> /// <param name="metadata"></param> private static int WriteEntityToSteam(MemoryStream entityStream, BinaryWriter entityWriter, IPersistEntity item, ExpressMetaData metadata) { entityWriter.Seek(0, SeekOrigin.Begin); entityWriter.Write(0); item.WriteEntity(entityWriter, metadata); var len = Convert.ToInt32(entityStream.Position); entityWriter.Seek(0, SeekOrigin.Begin); entityWriter.Write(len); entityWriter.Seek(0, SeekOrigin.Begin); return(len); }