Проблема с разными типами данных - PullRequest
0 голосов
/ 15 ноября 2010

У меня есть проект, который выполняет некоторый код на SSIS в SqlServer 2005 и SqlServer 2008. Моя проблема заключается в том, что я поддерживаю два решения Visual Studio для этого, потому что типы данных для двух версий SQL Server различны (заканчивается на..90 на SQL Server 2005 и ... 10 на SQL Server 2008).Они также находятся в разных сборках.

Существует ли простой способ управлять этим как при разработке, так и при сборке, я ненавижу вводить свой код в двух местах (каждое решение), а с приходом 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 Ответ

1 голос
/ 15 ноября 2010

Не совсем понятно, что делает ваш код, но нормальным подходом к такого рода вещам было бы создание интерфейса или абстрактного класса, а затем наличие нескольких реализаций (или производных классов) для специализированного поведения.Весь общий код может просто говорить с абстракцией, позволяя реализации разобраться с деталями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...