Added logic to only process RO value updates for the specified DocVersion.
This commit is contained in:
parent
d650f1c98b
commit
55f918c150
@ -6549,3 +6549,197 @@ GO
|
|||||||
IF (@@Error = 0) PRINT 'Trigger alteration: tr_Documents_Delete Succeeded'
|
IF (@@Error = 0) PRINT 'Trigger alteration: tr_Documents_Delete Succeeded'
|
||||||
ELSE PRINT 'Trigger alteration: tr_Documents_Delete Error on Alteration'
|
ELSE PRINT 'Trigger alteration: tr_Documents_Delete Error on Alteration'
|
||||||
GO
|
GO
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1)
|
||||||
|
DROP FUNCTION [vefn_GetVersionItems];
|
||||||
|
GO
|
||||||
|
/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionItems] ******/
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
/*
|
||||||
|
Select * from vefn_GetVersionItems('')
|
||||||
|
*/
|
||||||
|
/*****************************************************************************
|
||||||
|
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||||
|
Copyright 2013 - Volian Enterprises, Inc. All rights reserved.
|
||||||
|
*****************************************************************************/
|
||||||
|
CREATE FUNCTION [dbo].[vefn_GetVersionItems](@DocVersionList varchar(MAX))
|
||||||
|
RETURNS @VersionItems TABLE
|
||||||
|
(
|
||||||
|
VersionID int,
|
||||||
|
ItemID int,
|
||||||
|
ContentID int primary key
|
||||||
|
)
|
||||||
|
WITH EXECUTE AS OWNER
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
BEGIN
|
||||||
|
with Itemz([VersionID], [ItemID], [ContentID]) as
|
||||||
|
(Select DV.VersionID, [I].[ItemID], [I].[ContentID]
|
||||||
|
FROM [Items] I
|
||||||
|
JOIN vefn_DocVersionSplit(@DocVersionList) DV
|
||||||
|
ON I.[ItemID] = DV.[ItemID]
|
||||||
|
Union All
|
||||||
|
-- Children
|
||||||
|
select Z.VersionID, I.[ItemID], I.[ContentID]
|
||||||
|
from Itemz Z
|
||||||
|
join Parts P on P.ContentID = Z.ContentID
|
||||||
|
join Items I on I.ItemID = P.ItemID
|
||||||
|
Union All
|
||||||
|
-- Siblings
|
||||||
|
select Z.VersionID, I.[ItemID], I.[ContentID]
|
||||||
|
from Itemz Z
|
||||||
|
join Items I on I.PreviousID = Z.ItemID
|
||||||
|
)
|
||||||
|
insert into @VersionItems
|
||||||
|
select VersionID, [ItemID], [ContentID]
|
||||||
|
from ItemZ I
|
||||||
|
--Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ)
|
||||||
|
OPTION (MAXRECURSION 10000)
|
||||||
|
END
|
||||||
|
RETURN
|
||||||
|
END
|
||||||
|
|
||||||
|
go
|
||||||
|
IF (@@Error = 0) PRINT 'TableFunction [vefn_GetVersionItems] Succeeded'
|
||||||
|
ELSE PRINT 'TableFunction [vefn_GetVersionItems] Error on Creation'
|
||||||
|
|
||||||
|
/****** Object: StoredProcedure [getAffectedRoUsages] ******/
|
||||||
|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||||
|
DROP PROCEDURE [getAffectedRoUsages];
|
||||||
|
GO
|
||||||
|
|
||||||
|
/*
|
||||||
|
getAffectedROUsages 1, '00010000019c0000', 'KBR Test', 'Changed', 'KBR'
|
||||||
|
*/
|
||||||
|
/*****************************************************************************
|
||||||
|
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||||
|
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
||||||
|
*****************************************************************************/
|
||||||
|
CREATE PROCEDURE [dbo].[getAffectedRoUsages]
|
||||||
|
(
|
||||||
|
@RODbID int,
|
||||||
|
@ROID nvarchar(16),
|
||||||
|
@RODesc nvarchar(MAX),
|
||||||
|
@Command nvarchar(10),
|
||||||
|
@UserID nvarchar(100),
|
||||||
|
@VersionList nvarchar(MAX)
|
||||||
|
)
|
||||||
|
WITH EXECUTE AS OWNER
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
DECLARE @JustThisVersion TABLE
|
||||||
|
(
|
||||||
|
ContentID int primary key
|
||||||
|
)
|
||||||
|
Insert INTO @JustThisVersion
|
||||||
|
SELECT Distinct ContentID From vefn_GetVersionItems(@VersionList)
|
||||||
|
DECLARE @typeID int
|
||||||
|
SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required'
|
||||||
|
-- Add "Verification Required" Annotation for each ROUsage
|
||||||
|
INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID])
|
||||||
|
SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID
|
||||||
|
FROM Items where CONTENTID in (SELECT ContentID FROM ROUSAGES
|
||||||
|
where RODbID = @RODbID AND ROID = @ROID AND ContentID in (select ContentID from @JustThisVersion))
|
||||||
|
SELECT
|
||||||
|
[RoUsages].[ROUsageID],
|
||||||
|
[RoUsages].[ContentID],
|
||||||
|
[RoUsages].[ROID],
|
||||||
|
[RoUsages].[Config],
|
||||||
|
[RoUsages].[DTS],
|
||||||
|
[RoUsages].[UserID],
|
||||||
|
[RoUsages].[LastChanged],
|
||||||
|
[RoUsages].[RODbID],
|
||||||
|
[Contents].[Number] [Content_Number],
|
||||||
|
[Contents].[Text] [Content_Text],
|
||||||
|
[Contents].[Type] [Content_Type],
|
||||||
|
[Contents].[FormatID] [Content_FormatID],
|
||||||
|
[Contents].[Config] [Content_Config],
|
||||||
|
[Contents].[DTS] [Content_DTS],
|
||||||
|
[Contents].[UserID] [Content_UserID]
|
||||||
|
FROM [RoUsages]
|
||||||
|
JOIN [Contents] ON
|
||||||
|
[Contents].[ContentID]=[RoUsages].[ContentID]
|
||||||
|
WHERE
|
||||||
|
[RoUsages].[RODbID]=@RODbID AND [RoUsages].[ROID]=@ROID
|
||||||
|
AND [Contents].ContentID in (select ContentID from @JustThisVersion)
|
||||||
|
END
|
||||||
|
RETURN
|
||||||
|
|
||||||
|
GO
|
||||||
|
-- Display the status of Proc creation
|
||||||
|
IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedRoUsages Succeeded'
|
||||||
|
ELSE PRINT 'Procedure Creation: getAffectedRoUsages Error on Creation'
|
||||||
|
GO
|
||||||
|
|
||||||
|
/****** Object: StoredProcedure [getAffectedDRoUsages] ******/
|
||||||
|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedDRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||||
|
DROP PROCEDURE [getAffectedDRoUsages];
|
||||||
|
GO
|
||||||
|
|
||||||
|
/*
|
||||||
|
getAffectedDROUsages 1, '00010000019c0000', 'KBR Test', 'Changed', 'KBR'
|
||||||
|
*/
|
||||||
|
/*****************************************************************************
|
||||||
|
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||||
|
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
||||||
|
*****************************************************************************/
|
||||||
|
CREATE PROCEDURE [dbo].[getAffectedDRoUsages]
|
||||||
|
(
|
||||||
|
@RODbID int,
|
||||||
|
@ROID nvarchar(16),
|
||||||
|
@RODesc nvarchar(MAX),
|
||||||
|
@Command nvarchar(10),
|
||||||
|
@UserID nvarchar(100),
|
||||||
|
@VersionList nvarchar(max)
|
||||||
|
)
|
||||||
|
WITH EXECUTE AS OWNER
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
DECLARE @JustThisVersion TABLE
|
||||||
|
(
|
||||||
|
ContentID int primary key
|
||||||
|
)
|
||||||
|
Insert INTO @JustThisVersion
|
||||||
|
SELECT Distinct ContentID From vefn_GetVersionItems(@VersionList)
|
||||||
|
DECLARE @typeID int
|
||||||
|
SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required'
|
||||||
|
-- Add "Verification Required" Annotation for each ROUsage
|
||||||
|
INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID])
|
||||||
|
SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID
|
||||||
|
FROM Items where CONTENTID in (SELECT ContentID
|
||||||
|
FROM DROUsages DR
|
||||||
|
JOIN Entries EE on EE.DocID = DR.DocID
|
||||||
|
where RODbID = @RODbID AND ROID = @ROID AND ContentID in (select ContentID from @JustThisVersion))
|
||||||
|
SELECT
|
||||||
|
[DROUsages].[DROUsageID],
|
||||||
|
[DROUsages].[DocID],
|
||||||
|
[DROUsages].[ROID],
|
||||||
|
[DROUsages].[Config],
|
||||||
|
[DROUsages].[DTS],
|
||||||
|
[DROUsages].[UserID],
|
||||||
|
[DROUsages].[LastChanged],
|
||||||
|
[DROUsages].[RODbID],
|
||||||
|
[Documents].[LibTitle] [Document_LibTitle],
|
||||||
|
[Documents].[DocContent] [Document_DocContent],
|
||||||
|
[Documents].[DocAscii] [Document_DocAscii],
|
||||||
|
[Documents].[Config] [Document_Config],
|
||||||
|
[Documents].[DTS] [Document_DTS],
|
||||||
|
[Documents].[UserID] [Document_UserID],
|
||||||
|
[Documents].[FileExtension] [Document_FileExtension]
|
||||||
|
FROM [DRoUsages]
|
||||||
|
JOIN [Documents] ON
|
||||||
|
[Documents].[DocID]=[DROUsages].[DocID]
|
||||||
|
WHERE
|
||||||
|
[DRoUsages].[RODbID]=@RODbID AND [DRoUsages].[ROID]=@ROID
|
||||||
|
AND [Documents].[DocID] in (select EE.DocID from Entries EE where ContentID in (select ContentID from @JustThisVersion))
|
||||||
|
RETURN
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
-- Display the status of Proc creation
|
||||||
|
IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedDRoUsages Succeeded'
|
||||||
|
ELSE PRINT 'Procedure Creation: getAffectedDRoUsages Error on Creation'
|
||||||
|
GO
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
[Serializable()]
|
[Serializable()]
|
||||||
private class AffectedDROUsagesCriteria
|
private class AffectedDROUsagesCriteria
|
||||||
{
|
{
|
||||||
public AffectedDROUsagesCriteria(int roDbID, string roid, string roDesc, string command, string userID)
|
public AffectedDROUsagesCriteria(int roDbID, string roid, string roDesc, string command, string userID, string versionList)
|
||||||
{
|
{
|
||||||
_RODbID = roDbID;
|
_RODbID = roDbID;
|
||||||
_ROID = roid;
|
_ROID = roid;
|
||||||
@ -21,6 +21,12 @@ namespace VEPROMS.CSLA.Library
|
|||||||
_Command = command;
|
_Command = command;
|
||||||
_UserID = userID;
|
_UserID = userID;
|
||||||
}
|
}
|
||||||
|
private string _VersionList;
|
||||||
|
public string VersionList
|
||||||
|
{
|
||||||
|
get { return _VersionList; }
|
||||||
|
set { _VersionList = value; }
|
||||||
|
}
|
||||||
private int _RODbID;
|
private int _RODbID;
|
||||||
|
|
||||||
public int RODbID
|
public int RODbID
|
||||||
@ -57,11 +63,11 @@ namespace VEPROMS.CSLA.Library
|
|||||||
set { _UserID = value; }
|
set { _UserID = value; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static DROUsageInfoList GetAffected(int roDbID, string roid, string roDesc, string command)
|
public static DROUsageInfoList GetAffected(int roDbID, string roid, string roDesc, string command, string versionList)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
DROUsageInfoList tmp = DataPortal.Fetch<DROUsageInfoList>(new AffectedDROUsagesCriteria(roDbID, roid, roDesc, command, Volian.Base.Library.VlnSettings.UserID));
|
DROUsageInfoList tmp = DataPortal.Fetch<DROUsageInfoList>(new AffectedDROUsagesCriteria(roDbID, roid, roDesc, command, Volian.Base.Library.VlnSettings.UserID, versionList));
|
||||||
DROUsageInfo.AddList(tmp);
|
DROUsageInfo.AddList(tmp);
|
||||||
tmp.AddEvents();
|
tmp.AddEvents();
|
||||||
return tmp;
|
return tmp;
|
||||||
@ -88,6 +94,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
cm.Parameters.AddWithValue("@RODesc", criteria.RODesc);
|
cm.Parameters.AddWithValue("@RODesc", criteria.RODesc);
|
||||||
cm.Parameters.AddWithValue("@Command", criteria.Command);
|
cm.Parameters.AddWithValue("@Command", criteria.Command);
|
||||||
cm.Parameters.AddWithValue("@UserID", criteria.UserID);
|
cm.Parameters.AddWithValue("@UserID", criteria.UserID);
|
||||||
|
cm.Parameters.AddWithValue("@VersionList", criteria.VersionList);
|
||||||
|
|
||||||
cm.CommandTimeout = Database.DefaultTimeout;
|
cm.CommandTimeout = Database.DefaultTimeout;
|
||||||
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
|
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
|
||||||
|
@ -284,6 +284,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
{
|
{
|
||||||
docver.DocVersionAssociations[0].MyROFst = rofst;
|
docver.DocVersionAssociations[0].MyROFst = rofst;
|
||||||
docver.Save();
|
docver.Save();
|
||||||
|
UpdateROValuesText(origROFst, rofst,docver.VersionID.ToString());
|
||||||
return rofst;
|
return rofst;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,7 +323,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
// Now update the usages: compare old to new rofsts and update usages accordingly, i.e. modified
|
// Now update the usages: compare old to new rofsts and update usages accordingly, i.e. modified
|
||||||
// values, deleted ros, etc.
|
// values, deleted ros, etc.
|
||||||
UpdateROValuesText(origROFst, rofst);
|
UpdateROValuesText(origROFst, rofst, docver.VersionID.ToString());
|
||||||
return rofst;
|
return rofst;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -348,7 +349,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
private static void UpdateROValuesText(ROFstInfo origROFstInfo, ROFst newROFst)
|
private static void UpdateROValuesText(ROFstInfo origROFstInfo, ROFst newROFst, string versionList)
|
||||||
{
|
{
|
||||||
ROFSTLookup origLU = new ROFSTLookup(origROFstInfo);
|
ROFSTLookup origLU = new ROFSTLookup(origROFstInfo);
|
||||||
ROFSTLookup newLU = new ROFSTLookup(newROFst);
|
ROFSTLookup newLU = new ROFSTLookup(newROFst);
|
||||||
@ -365,7 +366,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
// roid's are stored in database as 16 characters long in the rousages table. They may be stored
|
// roid's are stored in database as 16 characters long in the rousages table. They may be stored
|
||||||
// as 12 characters in the ro.fst.
|
// as 12 characters in the ro.fst.
|
||||||
string padroid = chg.Length <= 12 ? chg + "0000" : chg;
|
string padroid = chg.Length <= 12 ? chg + "0000" : chg;
|
||||||
using (RoUsageInfoList affected = RoUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, padroid, desc, "Changed"))
|
using (RoUsageInfoList affected = RoUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, padroid, desc, "Changed", versionList))
|
||||||
{
|
{
|
||||||
foreach (RoUsageInfo roUsg in affected)
|
foreach (RoUsageInfo roUsg in affected)
|
||||||
{
|
{
|
||||||
@ -398,7 +399,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
// roid's are stored in database as 16 characters long in the rousages table. They may be stored
|
// roid's are stored in database as 16 characters long in the rousages table. They may be stored
|
||||||
// as 12 characters in the ro.fst.
|
// as 12 characters in the ro.fst.
|
||||||
string padroid = chg.Length <= 12 ? chg + "0000" : chg;
|
string padroid = chg.Length <= 12 ? chg + "0000" : chg;
|
||||||
using (DROUsageInfoList affected = DROUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, padroid.Substring(0,12), desc, "Changed"))
|
using (DROUsageInfoList affected = DROUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, padroid.Substring(0, 12), desc, "Changed", versionList))
|
||||||
{
|
{
|
||||||
foreach (DROUsageInfo droUsg in affected)
|
foreach (DROUsageInfo droUsg in affected)
|
||||||
{
|
{
|
||||||
@ -411,7 +412,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
{
|
{
|
||||||
string desc = string.Format("Deleted RO: Value = {0}", origLU.GetRoValue(del));
|
string desc = string.Format("Deleted RO: Value = {0}", origLU.GetRoValue(del));
|
||||||
string padroiddel = del.Length <= 12 ? del + "0000" : del;
|
string padroiddel = del.Length <= 12 ? del + "0000" : del;
|
||||||
using (RoUsageInfoList affected = RoUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, padroiddel, desc, "Deleted"))
|
using (RoUsageInfoList affected = RoUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, padroiddel, desc, "Deleted",versionList))
|
||||||
{
|
{
|
||||||
foreach (RoUsageInfo roUsg in affected)
|
foreach (RoUsageInfo roUsg in affected)
|
||||||
{
|
{
|
||||||
@ -428,7 +429,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
using (DROUsageInfoList Daffected = DROUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, del.Substring(0,12), desc, "Deleted"))
|
using (DROUsageInfoList Daffected = DROUsageInfoList.GetAffected(origROFstInfo.MyRODb.RODbID, del.Substring(0, 12), desc, "Deleted", versionList))
|
||||||
{
|
{
|
||||||
foreach (DROUsageInfo droUsg in Daffected)
|
foreach (DROUsageInfo droUsg in Daffected)
|
||||||
{
|
{
|
||||||
|
@ -13,13 +13,20 @@ namespace VEPROMS.CSLA.Library
|
|||||||
[Serializable()]
|
[Serializable()]
|
||||||
private class AffectedROUsagesCriteria
|
private class AffectedROUsagesCriteria
|
||||||
{
|
{
|
||||||
public AffectedROUsagesCriteria(int roDbID, string roid, string roDesc, string command, string userID)
|
public AffectedROUsagesCriteria(int roDbID, string roid, string roDesc, string command, string userID, string versionList)
|
||||||
{
|
{
|
||||||
_RODbID = roDbID;
|
_RODbID = roDbID;
|
||||||
_ROID = roid;
|
_ROID = roid;
|
||||||
_RODesc = roDesc;
|
_RODesc = roDesc;
|
||||||
_Command = command;
|
_Command = command;
|
||||||
_UserID = userID;
|
_UserID = userID;
|
||||||
|
_VersionList = versionList;
|
||||||
|
}
|
||||||
|
private string _VersionList;
|
||||||
|
public string VersionList
|
||||||
|
{
|
||||||
|
get { return _VersionList; }
|
||||||
|
set { _VersionList = value; }
|
||||||
}
|
}
|
||||||
private int _RODbID;
|
private int _RODbID;
|
||||||
|
|
||||||
@ -57,11 +64,11 @@ namespace VEPROMS.CSLA.Library
|
|||||||
set { _UserID = value; }
|
set { _UserID = value; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static RoUsageInfoList GetAffected(int roDbID, string roid, string roDesc, string command)
|
public static RoUsageInfoList GetAffected(int roDbID, string roid, string roDesc, string command, string versionList)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
RoUsageInfoList tmp = DataPortal.Fetch<RoUsageInfoList>(new AffectedROUsagesCriteria(roDbID, roid, roDesc, command, Volian.Base.Library.VlnSettings.UserID));
|
RoUsageInfoList tmp = DataPortal.Fetch<RoUsageInfoList>(new AffectedROUsagesCriteria(roDbID, roid, roDesc, command, Volian.Base.Library.VlnSettings.UserID,versionList));
|
||||||
RoUsageInfo.AddList(tmp);
|
RoUsageInfo.AddList(tmp);
|
||||||
tmp.AddEvents();
|
tmp.AddEvents();
|
||||||
return tmp;
|
return tmp;
|
||||||
@ -88,6 +95,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
cm.Parameters.AddWithValue("@RODesc", criteria.RODesc);
|
cm.Parameters.AddWithValue("@RODesc", criteria.RODesc);
|
||||||
cm.Parameters.AddWithValue("@Command", criteria.Command);
|
cm.Parameters.AddWithValue("@Command", criteria.Command);
|
||||||
cm.Parameters.AddWithValue("@UserID", criteria.UserID);
|
cm.Parameters.AddWithValue("@UserID", criteria.UserID);
|
||||||
|
cm.Parameters.AddWithValue("@VersionList", criteria.VersionList);
|
||||||
|
|
||||||
cm.CommandTimeout = Database.DefaultTimeout;
|
cm.CommandTimeout = Database.DefaultTimeout;
|
||||||
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
|
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user