Språk

Design-time-metoder för en dataflödeskomponent

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Innan exekvering sägs dataflödesuppgiften vara i ett designtidsläge, då den genomgår inkrementella förändringar. Ändringar kan inkludera tillägg eller borttagning av komponenter, tillägg eller borttagning av vägobjekt som kopplar samman komponenter, samt ändringar i komponenternas metadata. När metadataförändringar sker kan komponenten övervaka och reagera på förändringarna. Till exempel kan en komponent förbjuda vissa ändringar eller göra ytterligare ändringar som svar på en ändring. Vid designtillfället interagerar designern med en komponent via designtidsgränssnittet IDTSDesigntimeComponent100 .

Design-Time Implementering

Designtidsgränssnittet för en komponent beskrivs av gränssnittet IDTSDesigntimeComponent100 . Även om du inte explicit implementerar detta gränssnitt, kommer en kännedom om de metoder som definieras i detta gränssnitt att hjälpa dig att förstå vilka metoder i PipelineComponent basklassen som motsvarar designtidsinstansen av en komponent.

När en komponent laddas i SQL Server Data Tools (SSDT) instansieras designtidsinstansen av komponenten och gränssnittets metoder IDTSDesigntimeComponent100 anropas när komponenten redigeras. Implementeringen av basklassen låter dig bara åsidosätta de metoder som din komponent kräver. I många fall kan du åsidosätta dessa metoder för att förhindra olämpliga redigeringar av en komponent. Till exempel, för att förhindra att användare lägger till en utdata till en komponent, åsidosätt metoden InsertOutput . Annars, när implementeringen av denna metod av basklassen anropas, läggs en utdata till komponenten.

Oavsett syftet eller funktionaliteten hos din komponent bör du åsidosätta ProvideComponentProperties, Validate, och ReinitializeMetaData metoderna. För mer information om Validate och ReinitializeMetaData, se Validating a Data Flow Component.

TillhandahållandeKomponentEgenskaper-metoden

Initialiseringen av en komponent sker i metoden ProvideComponentProperties . Denna metod anropas av SSIS Designer när en komponent läggs till i dataflödesuppgiften och liknar en klasskonstruktör. Komponentutvecklare bör skapa och initiera sina indata, utdata och anpassade egenskaper under detta metodanrop. Metoden ProvideComponentProperties skiljer sig från en konstruktör eftersom den inte anropas varje gång designtidsinstansen eller körtidsinstansen av komponenten instansieras.

Basklassimplementeringen av metoden lägger till en indata och en utdata till komponenten och tilldelar indatans ID till egenskapen SynchronousInputID . I SQL Server namnges dock inte in- och utdataobjekten som läggs till av basklassen. Paket som innehåller en komponent med in- eller utdataobjekt vars egenskap Namn inte är satt kommer inte att laddas framgångsrikt. Därför måste du, när du använder basimplementationen, explicit tilldela värden till egenskapen Namn, för standardin- och utdata.

public override void ProvideComponentProperties()  
{  
    /// TODO: Reset the component.  
    /// TODO: Add custom properties.  
    /// TODO: Add input objects.  
    /// TODO: Add output objects.  
}  
Public Overrides Sub ProvideComponentProperties()  
    ' TODO: Reset the component.  
    ' TODO: Add custom properties.  
    ' TODO: Add input objects.  
    ' TODO: Add output objects.  
End Sub  

Skapa anpassade egenskaper

Anropet till ProvideComponentProperties metoden är där komponentutvecklare ska lägga till anpassade egenskaper (IDTSCustomProperty100) till komponenten. Anpassade egenskaper har ingen egenskap för datatyp. Datatypen för en anpassad egenskap bestäms av datatypen för det värde du tilldelar dess Value egenskap. Men efter att du har tilldelat ett initialt värde till den anpassade egenskapen kan du inte tilldela ett värde med en annan datatyp.

Note

Gränssnittet IDTSCustomProperty100 har begränsat stöd för egenskapsvärden av typen Object. Det enda objekt du kan lagra som värdet på en anpassad egenskap är en array av enkla typer som strängar eller heltal.

Du kan indikera att din anpassade egenskap stöder egenskapsuttryck genom att sätta värdet på dess ExpressionType egenskap till CPET_NOTIFY från uppräkningen DTSCustomPropertyExpressionType , som visas i följande exempel. Du behöver inte lägga till någon kod för att hantera eller validera egenskapsuttrycket som användaren angett. Du kan sätta ett standardvärde för egenskapen, validera dess värde och läsa och använda dess värde normalt.

IDTSCustomProperty100 myCustomProperty;  
...  
myCustomProperty.ExpressionType = DTSCustomPropertyExpressionType.CPET_NOTIFY;  
Dim myCustomProperty As IDTSCustomProperty100  
...  
myCustomProperty.ExpressionType = DTSCustomPropertyExpressionType.CPET_NOTIFY  

Du kan begränsa användare till att välja ett eget egenskapsvärde från en uppräkning genom att använda egenskapen TypeConverter , som visas i följande exempel, vilket förutsätter att du har definierat en publik uppräkning som heter MyValidValues.

IDTSCustomProperty100 customProperty = outputColumn.CustomPropertyCollection.New();  
customProperty.Name = "My Custom Property";  
// This line associates the type with the custom property.  
customProperty.TypeConverter = typeof(MyValidValues).AssemblyQualifiedName;  
// Now you can use the enumeration values directly.  
customProperty.Value = MyValidValues.ValueOne;    
Dim customProperty As IDTSCustomProperty100 = outputColumn.CustomPropertyCollection.New   
customProperty.Name = "My Custom Property"   
' This line associates the type with the custom property.  
customProperty.TypeConverter = GetType(MyValidValues).AssemblyQualifiedName   
' Now you can use the enumeration values directly.  
customProperty.Value = MyValidValues.ValueOne  

För mer information, se "Generalized Type Conversion" och "Implementing a Type Converter" i MSDN-biblioteket.

Du kan ange en dialogruta för en anpassad redigerare för värdet på din egenskap genom att använda egenskapen UITypeEditor , som visas i följande exempel. Först måste du skapa en anpassad typredigerare som ärver från System.Drawing.Design.UITypeEditor, om du inte kan hitta en befintlig UI-typeditorklass som passar dina behov.

public class MyCustomTypeEditor : UITypeEditor  
{  
...  
}  
Public Class MyCustomTypeEditor  
  Inherits UITypeEditor   
  ...  
End Class  

Ange sedan denna klass som värdet på egenskapen UITypeEditor till din egendom.

IDTSCustomProperty100 customProperty = outputColumn.CustomPropertyCollection.New();  
customProperty.Name = "My Custom Property";  
// This line associates the editor with the custom property.  
customProperty.UITypeEditor = typeof(MyCustomTypeEditor).AssemblyQualifiedName;  
Dim customProperty As IDTSCustomProperty100 = outputColumn.CustomPropertyCollection.New   
customProperty.Name = "My Custom Property"   
' This line associates the editor with the custom property.  
customProperty.UITypeEditor = GetType(MyCustomTypeEditor).AssemblyQualifiedName  

För mer information, se "Implementing a UI Type Editor" i MSDN-biblioteket.