예제 #1
0
        public Stream GetStream()
        {
            var raw = RawData;

            if (raw == null)
            {
                return(null);
            }
            var stream = raw.Stream;

            if (stream != null)
            {
                return(CloneStream(stream));
            }
            if (OwnerNode == null)
            {
                return(null);
            }

            if (this.OwnerNode.SavingState != ContentSavingState.Finalized)
            {
                throw new InvalidOperationException(SR.GetString(SR.Exceptions.General.Error_AccessToNotFinalizedBinary_2, this.OwnerNode.Path, this.PropertyType.Name));
            }

            return(DataBackingStore.GetBinaryStream2(OwnerNode.Id, OwnerNode.VersionId, PropertyType.Id));
            //return DataBackingStore.GetBinaryStream(OwnerNode.VersionId, PropertyType.Id);
        }
예제 #2
0
파일: NodeData.cs 프로젝트: kimduquan/DMIS
        private object LoadProperty(PropertyType propertyType)
        {
            var propId = propertyType.Id;

            lock (_readPropertySync)
            {
                if (dynamicData.ContainsKey(propId))
                {
                    return(dynamicData[propId]);
                }
            }
            object data = DataBackingStore.LoadProperty(this.VersionId, propertyType);

            lock (_readPropertySync)
            {
                if (!dynamicData.ContainsKey(propId))
                {
                    dynamicData.Add(propId, data);
                }
            }
            return(data);
        }
예제 #3
0
        internal static bool NodeExists(string path)
        {
            if (path == null)
            {
                throw new ArgumentNullException("path");
            }

            if (!CanExistInDatabase(path))
            {
                return(false);
            }

            // Look at the cache first
            var pathKey = DataBackingStore.CreateNodeHeadPathCacheKey(path);

            if (DistributedApplication.Cache.Get(pathKey) as NodeHead != null)
            {
                return(true);
            }

            // If it wasn't in the cache, check the database
            return(DataProvider.NodeExists(path));
        }
예제 #4
0
 public static IEnumerable <NodeHead> Get(IEnumerable <int> idArray)
 {
     return(DataBackingStore.GetNodeHeads(idArray));
 }
예제 #5
0
 public static NodeHead Get(string path)
 {
     return(DataBackingStore.GetNodeHead(path));
 }
예제 #6
0
 internal static NodeHead GetByVersionId(int versionId)
 {
     return(DataBackingStore.GetNodeHeadByVersionId(versionId));
 }
예제 #7
0
 public static NodeHead Get(int nodeId)
 {
     return(DataBackingStore.GetNodeHead(nodeId));
 }
예제 #8
0
 public void Rollback()
 {
     DataBackingStore.OnNodeDataRollback(this);
 }
예제 #9
0
 public void Commit()
 {
     DataBackingStore.RemoveFromCache(this);
 }