2010-11-15 63 views
0

我有一個項目在SqlServer 2005和SqlServer 2008的SSIS上運行一些代碼。我的問題是我維護兩個Visual Studio解決方案,因爲兩個版本的SQL Server的數據類型是不同(以SQL Server 2005上的.90和SQL Server 2008上的... 10結尾)。他們也在不同的集會。不同數據類型的問題

是否有一個簡單的方法來管理這一點,無論是在開發和構建,我討厭不得不在兩個地方(每個解決方案)輸入我的代碼,並與SQL Server 2011年來我懷疑我將不得不這樣做三倍。你如何解決這個問題,或者一般如何解決這個問題的建議?

編輯: 下面是我在做什麼的樣本,在我看來它很難在一個界面這個因素了,還是?

foreach (IDTSVirtualInputColumn90 virtualColumn in virtualInput.VirtualInputColumnCollection) 
{ 
    if (string.Compare(virtualColumn.Name, columnTransformation.FromColumn.Name, true) == 0 || (columnTransformation.FromColumn.Preformatted && columnTransformation.FromColumn.Name.EndsWith(" as \"" + virtualColumn.Name + "\""))) 
    { 
     convInstance.SetUsageType(input.ID, virtualInput, virtualColumn.LineageID, DTSUsageType.UT_READONLY); 
     IDTSOutputColumn90 outputColumn = convComponent.OutputCollection[0].OutputColumnCollection.New(); 
     outputColumn.Name = virtualColumn.Name + " (Converted)"; 
     outputColumn.SetDataTypeProperties(columnTransformation.ToColumn.DataType, columnTransformation.ToColumn.Length, columnTransformation.ToColumn.Precision, columnTransformation.ToColumn.Scale, 0); 
     outputColumn.ErrorRowDisposition = DTSRowDisposition.RD_FailComponent; 
     outputColumn.TruncationRowDisposition = DTSRowDisposition.RD_IgnoreFailure; 
     IDTSCustomProperty90 outputProp = outputColumn.CustomPropertyCollection.New(); 
     outputProp.Name = "SourceInputColumnLineageID"; 
     outputProp.Value = virtualColumn.LineageID; 
     outputProp = outputColumn.CustomPropertyCollection.New(); 
     outputProp.Name = "FastParse"; 
     outputProp.Value = false; 
     break; 
    } 
} 

回答

1

這不是真的清楚你的代碼是幹什麼的,但正常的方式來這樣的事情是創建一個接口或抽象類,然後有專門的行爲多個實現(或派生類) 。所有的通用代碼都可以與抽象對話,讓實現處理細節。