Język

Metody czasu projektowania składnika przepływu danych

Dotyczy:SQL Server Środowisko SSIS Integration Runtime w usłudze Azure Data Factory

Przed wykonaniem zadanie przepływu danych jest określane jako w stanie projektowym, ponieważ podlega stopniowym zmianom. Zmiany mogą obejmować dodawanie lub usuwanie komponentów, dodawanie lub usuwanie obiektów ścieżek łączących komponenty oraz zmiany w metadanych tych komponentów. Gdy zachodzą zmiany metadanych, komponent może monitorować i reagować na zmiany. Na przykład komponent może zakazać pewnych zmian lub wprowadzać dodatkowe zmiany w odpowiedzi na zmianę. W czasie projektowania projektant wchodzi w interakcję z komponentem poprzez interfejs projektowy IDTSDesigntimeComponent100 .

Design-Time Wdrożenie

Interfejs w czasie projektowania komponentu jest opisywany przez interfejs.IDTSDesigntimeComponent100 Chociaż nie implementujesz tego interfejsu wprost, znajomość metod zdefiniowanych w tym interfejsie pomoże Ci zrozumieć, które metody PipelineComponent klasy bazowej odpowiadają instancji w czasie projektowania komponentu.

Gdy komponent jest ładowany w SQL Server Data Tools (SSDT), instancja komponentu w czasie projektowania jest instancjonowana, a metody interfejsu IDTSDesigntimeComponent100 są wywoływane podczas edycji komponentu. Implementacja klasy bazowej pozwala nadpisać tylko te metody, których wymaga komponent. W wielu przypadkach możesz nadpisać te metody, aby zapobiec niewłaściwym edycjom komponentu. Na przykład, aby zapobiec dodaniu wyjścia do komponentu, należy nadpisać metodę InsertOutput . W przeciwnym razie, gdy wywołana jest implementacja tej metody przez klasę bazową, dodaje ona wyjście do komponentu.

Niezależnie od celu czy funkcjonalności komponentu, powinieneś nadpisać , ProvideComponentPropertiesValidate, i ReinitializeMetaData metody. Więcej informacji o Validate i , ReinitializeMetaDatazobacz Validating a Przepływ danych Component.

Metoda ProvideComponentProperties

Inicjalizacja komponentu zachodzi w tej metodzie ProvideComponentProperties . Ta metoda jest wywoływana przez SSIS Designer, gdy komponent jest dodawany do zadania przepływu danych i jest podobna do konstruktora klas. Programiści komponentów powinni tworzyć i inicjować swoje wejścia, wyjścia oraz własne właściwości podczas wywołania tej metody. Metoda różni ProvideComponentProperties się od konstruktora tym, że nie jest wywoływana za każdym razem, gdy instancja w czasie projektowania lub instancja w czasie działania komponentu jest wykonywana.

Implementacja klasy bazowej tej metody dodaje wejście i wyjście do komponentu oraz przypisuje identyfikator wejścia do SynchronousInputID właściwości. Jednak w SQL Server obiekty wejściowe i wyjściowe dodawane przez klasę bazową nie są nazwane. Pakiety zawierające komponent z obiektami wejściowymi lub wyjściowymi, których właściwość Name nie jest ustawiona, nie załadują się pomyślnie. Dlatego używając podstawowej implementacji, musisz przypisać wartości jawnie do właściwości Name domyślnego wejścia i wyjścia.

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  

Tworzenie właściwości niestandardowych

Wywołanie ProvideComponentProperties metody polega na tym, że deweloperzy komponentów powinni dodać własne właściwości (IDTSCustomProperty100) do komponentu. Własności niestandardowe nie mają właściwości typu danych. Typ danych niestandardowej właściwości jest ustalany przez typ danych wartości, którą przypisasz jej Value właściwości. Jednak po przypisaniu wartości początkowej do własności niestandardowej nie możesz przypisać wartości z innym typem danych.

Note

Interfejs IDTSCustomProperty100 ma ograniczone wsparcie dla wartości właściwości typu Object. Jedynym obiektem, który możesz przechować jako wartość własności niestandardowej, jest tablica prostych typów, takich jak łańcuchy znaków lub liczby całkowite.

Możesz wskazać, że Twoja własność niestandardowa obsługuje wyrażenia właściwości, ustawiając wartość jej ExpressionType właściwości na CPET_NOTIFY z DTSCustomPropertyExpressionType wyliczenia, jak pokazano w poniższym przykładzie. Nie musisz dodawać żadnego kodu, aby obsługiwać lub weryfikować wyrażenie właściwości wpisane przez użytkownika. Możesz ustawić domyślną wartość dla tej właściwości, zweryfikować jej wartość oraz odczytać i używać jej wartości normalnie.

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

Możesz ograniczyć użytkowników do wyboru niestandardowej wartości właściwości z enumeracji, korzystając z tej TypeConverter właściwości, jak pokazano w poniższym przykładzie, zakładając, że zdefiniowałeś publiczną enumerację o nazwie 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  

Więcej informacji można znaleźć w sekcji "Generalized Type Conversion" oraz "Implementing a Type Converter" w bibliotece MSDN.

Możesz określić okno dialogowe edytora niestandardowego dla wartości własnej właściwości, korzystając z tej UITypeEditor właściwości, jak pokazano w poniższym przykładzie. Po pierwsze, musisz stworzyć niestandardowy edytor typów, który dziedziczy z System.Drawing.Design.UITypeEditor, jeśli nie możesz znaleźć istniejącej klasy edytora typów UI odpowiadającej Twoim potrzebom.

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

Następnie określ tę klasę jako wartość UITypeEditor właściwości Twojej niestandardowej nieruchomości.

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  

Więcej informacji można znaleźć w sekcji "Implementing a UI Type Editor" w bibliotece MSDN.