不同数据类型的问题

时间:2010-11-15 09:11:10

标签: c# sql-server assemblies types

我有一个项目在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 个答案:

答案 0 :(得分:1)

你的代码在做什么并不是很清楚,但是这种方法的常规方法是创建一个接口或抽象类,然后为专门的行为提供多个实现(或派生类)。所有公共代码都可以与抽象对话,让实现处理细节。