From aa21c16ebb84d69e0abfca6ce65f014c363740a3 Mon Sep 17 00:00:00 2001 From: Rich Date: Wed, 24 May 2017 13:00:33 +0000 Subject: [PATCH] Changed ROImage to use GetJustROImage so that the ROFST lookup is not loaded for each ROImage. --- .../Extension/ROImageExt.cs | 2 +- .../VEPROMS.CSLA.Library/Generated/Figure.cs | 2 +- .../Generated/RODbROImage.cs | 2 +- .../Generated/ROFstFigure.cs | 2 +- .../VEPROMS.CSLA.Library/Generated/ROImage.cs | 72 +++++++++++++++++++ .../Generated/ROImageInfo.cs | 2 +- 6 files changed, 77 insertions(+), 5 deletions(-) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ROImageExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ROImageExt.cs index e946039b..dda8780d 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ROImageExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ROImageExt.cs @@ -167,7 +167,7 @@ namespace VEPROMS.CSLA.Library int pcount = 1; foreach (int id in imageIds) { - using (ROImage ro = ROImage.Get(id)) + using (ROImage ro = ROImage.GetJustROImage(id))//Don't load figures or ROFST - Causing Memory Crash { string nm = ro.FileName; OnCompressAllExistingImages(null, new ROImageInfoCompressionEventArgs(pcount++, nm)); diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/Figure.cs b/PROMS/VEPROMS.CSLA.Library/Generated/Figure.cs index bb28d798..8a46c8e6 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/Figure.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/Figure.cs @@ -173,7 +173,7 @@ namespace VEPROMS.CSLA.Library get { CanReadProperty("MyROImage", true); - if (_MyROImage == null && _ImageID != 0) _MyROImage = ROImage.Get(_ImageID); + if (_MyROImage == null && _ImageID != 0) _MyROImage = ROImage.GetJustROImage(_ImageID);//Don't load figures or ROFST - Causing Memory Crash return _MyROImage; } [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/RODbROImage.cs b/PROMS/VEPROMS.CSLA.Library/Generated/RODbROImage.cs index b629ba58..ee686878 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/RODbROImage.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/RODbROImage.cs @@ -56,7 +56,7 @@ namespace VEPROMS.CSLA.Library get { CanReadProperty("MyROImage", true); - if (_MyROImage == null && _ImageID != 0) _MyROImage = ROImage.Get(_ImageID); + if (_MyROImage == null && _ImageID != 0) _MyROImage = ROImage.GetJustROImage(_ImageID);//Don't load figures or ROFST - Causing Memory Crash return _MyROImage; } } diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/ROFstFigure.cs b/PROMS/VEPROMS.CSLA.Library/Generated/ROFstFigure.cs index f0a3fc2b..b4342541 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/ROFstFigure.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/ROFstFigure.cs @@ -78,7 +78,7 @@ namespace VEPROMS.CSLA.Library get { CanReadProperty("MyROImage", true); - if (_MyROImage == null && _ImageID != 0) _MyROImage = ROImage.Get(_ImageID); + if (_MyROImage == null && _ImageID != 0) _MyROImage = ROImage.GetJustROImage(_ImageID);//Don't load figures or ROFST - Causing Memory Crash return _MyROImage; } [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/ROImage.cs b/PROMS/VEPROMS.CSLA.Library/Generated/ROImage.cs index 3fedc5d2..cb14fe57 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/ROImage.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/ROImage.cs @@ -653,6 +653,30 @@ namespace VEPROMS.CSLA.Library throw new DbCslaException("Error on ROImage.Get", ex); } } + public static ROImage GetJustROImage(int imageID)//Don't load figures or ROFST - Causing Memory Crash + { + if (!CanGetObject()) + throw new System.Security.SecurityException("User not authorized to view a ROImage"); + try + { + ROImage tmp = GetCachedByPrimaryKey(imageID); + if (tmp == null) + { + tmp = DataPortal.Fetch(new PKCriteriaJustROImage(imageID)); + AddToCache(tmp); + } + if (tmp.ErrorMessage == "No Record Found") + { + tmp.Dispose(); // Clean-up ROImage + tmp = null; + } + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on ROImage.Get", ex); + } + } public static ROImage GetByRODbID_FileName_DTS(int rODbID, string fileName, DateTime dts) { if (!CanGetObject()) @@ -735,6 +759,17 @@ namespace VEPROMS.CSLA.Library } } [Serializable()] + protected class PKCriteriaJustROImage//Don't load figures or ROFST - Causing Memory Crash + { + private int _ImageID; + public int ImageID + { get { return _ImageID; } } + public PKCriteriaJustROImage(int imageID) + { + _ImageID = imageID; + } + } + [Serializable()] private class RODbID_FileName_DTSCriteria { private int _RODbID; @@ -826,6 +861,43 @@ namespace VEPROMS.CSLA.Library throw new DbCslaException("ROImage.DataPortal_Fetch", ex); } } + private void DataPortal_Fetch(PKCriteriaJustROImage criteria)//Don't load figures or ROFST - Causing Memory Crash + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ROImage.DataPortal_Fetch", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + ApplicationContext.LocalContext["cn"] = cn; + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getJustROImage"; + cm.Parameters.AddWithValue("@ImageID", criteria.ImageID); + cm.CommandTimeout = Database.DefaultTimeout; + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + if (!dr.Read()) + { + _ErrorMessage = "No Record Found"; + return; + } + ReadData(dr); + // load child objects + } + } + // removing of item only needed for local data portal + if (ApplicationContext.ExecutionLocation == ApplicationContext.ExecutionLocations.Client) + ApplicationContext.LocalContext.Remove("cn"); + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("ROImage.DataPortal_Fetch", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("ROImage.DataPortal_Fetch", ex); + } + } private void DataPortal_Fetch(RODbID_FileName_DTSCriteria criteria) { if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ROImage.DataPortal_Fetch", GetHashCode()); diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/ROImageInfo.cs b/PROMS/VEPROMS.CSLA.Library/Generated/ROImageInfo.cs index 4790a77d..4ad0717d 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/ROImageInfo.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/ROImageInfo.cs @@ -273,7 +273,7 @@ namespace VEPROMS.CSLA.Library } public virtual ROImage Get() { - return _Editable = ROImage.Get(_ImageID); + return _Editable = ROImage.GetJustROImage(_ImageID);//Don't load figures or ROFST - Causing Memory Crash } public static void Refresh(ROImage tmp) {