Share via


SMOEnumerator.Current Property

Gets the current object from the enumerator.

Namespace:  Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO
Assembly:  Microsoft.SqlServer.ForEachSMOEnumerator (in Microsoft.SqlServer.ForEachSMOEnumerator.dll)

Syntax

'Declaration
Public ReadOnly Property Current As Object 
    Get
'Usage
Dim instance As SMOEnumerator 
Dim value As Object 

value = instance.Current
public Object Current { get; }
public:
virtual property Object^ Current {
    Object^ get () sealed;
}
abstract Current : Object 
override Current : Object
final function get Current () : Object

Property Value

Type: System.Object
An object that is the current object in the collection.

Implements

IEnumerator.Current

Examples

The following code example creates a ForEachLoop, creates a SMO enumerator and hosts it in a ForEachEnumeratorHost, where it is then added as the ForEachEnumerator in the ForEachLoop. Returning a ForEachSMOEnumerator, a SMOEnumerator is created as a System.Collections.IEnumerator and iterated over using MoveNext and Current. After the collection has passed the end, the Reset is used to reset the iterator.

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO;

namespace SMOEnumerator
{
    class Program
    {
        const string PACKAGEFILENAME = @"\SamplePackage.dtsx";

        static void Main(string[] args)
        {
            // Create the SSIS application
            Application application = new Application();

            // Create the new package
            Package package = new Package();
            package.PackageType = DTSPackageType.DTSDesigner100;
            package.Name = "SMOEnumerator Sample";
            package.Description = "This is a sample for SMOEnumerator";
            package.CreatorComputerName = @"MACHINENAME"; // System.Environment.MachineName;
            package.CreatorName = @"USERNAME"; //System.Environment.UserName;

            // Adds the ADO.NET connection manager to the package
            Connections connections = package.Connections;
            ConnectionManager connectionManager = connections.Add("ADO.NET:SQL");
            Console.WriteLine("ConnectionManager creation name: {0}", connectionManager.CreationName);
            connectionManager.Name = @"localhost.AdventureWorks";
            connectionManager.ConnectionString = @"Data Source=localhost;"
                + "Initial Catalog=AdventureWorks;"
                + "Integrated Security=True;";

            // Create ForEach SMO Loop task
            Executables executables = package.Executables;
            ForEachLoop forEachLoop = executables.Add("STOCK:FOREACHLOOP") as ForEachLoop;
            forEachLoop.Name = "Foreach Loop Container";
            forEachLoop.Description = "Foreach Loop Container";

            ForEachEnumeratorInfo forEachEnumeratorInfo = application.ForEachEnumeratorInfos["Foreach SMO Enumerator"];
            ForEachEnumeratorHost forEachEnumeratorHost = forEachEnumeratorInfo.CreateNew();
            forEachLoop.ForEachEnumerator = forEachEnumeratorHost;

            // Setup the SMO enumerator
            ForEachSMOEnumerator forEachSMOEnumerator = forEachEnumeratorHost.InnerObject as ForEachSMOEnumerator;
            forEachSMOEnumerator.EnumURN = @"RuntimeServer[@Connection='"
                + connectionManager.ID + @"']/Server[@Name='localhost']"
                + @"/Database[@Name='AdventureWorks']"
                + @"/SMOEnumObj[@Name='Tables']"
                + @"/SMOEnumType[@Name='ObjectsPP']";

            System.Collections.IEnumerator smoEnumerator = (System.Collections.IEnumerator)forEachSMOEnumerator.GetEnumerator(
            connections, null, null, null);
            Console.WriteLine("The collection contains the following values:");
            int i = 0;
            while ((smoEnumerator.MoveNext()) && (smoEnumerator.Current != null))
                Console.WriteLine("[{0}] {1}", i++, smoEnumerator.Current);

             smoEnumerator.Reset();

            // Validate the layout of the package
            DTSExecResult status = package.Validate(package.Connections, null, null, null);
            Console.WriteLine("Validation result: " + status);

            // Save the package
            String currentDirectory = Environment.CurrentDirectory;
            application.SaveToXml(currentDirectory + PACKAGEFILENAME, package, null);
            Console.WriteLine(@"Package saved to " + currentDirectory + PACKAGEFILENAME);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO
 
Namespace SMOEnumerator
    Class Program
        const String PACKAGEFILENAME = "\SamplePackage.dtsx"
 
        Shared  Sub Main(ByVal args() As String)
            ' Create the SSIS application
            Dim application As Application =  New Application() 
 
            ' Create the new package
            Dim package As Package =  New Package() 
            package.PackageType = DTSPackageType.DTSDesigner100
            package.Name = "SMOEnumerator Sample"
            package.Description = "This is a sample for SMOEnumerator"
            package.CreatorComputerName = "MACHINENAME" ' System.Environment.MachineName;
            package.CreatorName = "USERNAME" 'System.Environment.UserName;
 
            ' Adds the ADO.NET connection manager to the package
            Dim connections As Connections =  package.Connections 
            Dim connectionManager As ConnectionManager =  connections.Add("ADO.NET:SQL") 
            Console.WriteLine("ConnectionManager creation name: {0}", connectionManager.CreationName)
            connectionManager.Name = "localhost.AdventureWorks"
            connectionManager.ConnectionString = "Data Source=localhost;"
                + "Initial Catalog=AdventureWorks;"
                Dim "Integrated Security=True;" As +
 
            ' Create ForEach SMO Loop task
            Dim executables As Executables =  package.Executables 
            Dim forEachLoop As ForEachLoop =  executables.Add("STOCK:FOREACHLOOP") as ForEachLoop 
            forEachLoop.Name = "Foreach Loop Container"
            forEachLoop.Description = "Foreach Loop Container"
 
            Dim forEachEnumeratorInfo As ForEachEnumeratorInfo =  application.ForEachEnumeratorInfos("Foreach SMO Enumerator") 
            Dim forEachEnumeratorHost As ForEachEnumeratorHost =  forEachEnumeratorInfo.CreateNew() 
            forEachLoop.ForEachEnumerator = forEachEnumeratorHost
 
            ' Setup the SMO enumerator
            Dim forEachSMOEnumerator As ForEachSMOEnumerator =  forEachEnumeratorHost.InnerObject as ForEachSMOEnumerator 
            forEachSMOEnumerator.EnumURN = "RuntimeServer[@Connection='"
                + connectionManager.ID + "']/Server[@Name='localhost']"
                + "/Database[@Name='AdventureWorks']"
                + "/SMOEnumObj[@Name='Tables']"
                Dim "/SMOEnumType[@Name='ObjectsPP']" As +
 
            System.Collections.IEnumerator smoEnumerator = (System.Collections.IEnumerator)forEachSMOEnumerator.GetEnumerator(
                connections, Nothing, Nothing, Nothing)
            Console.WriteLine("The collection contains the following values:")
            Dim i As Integer =  0 
            While (smoEnumerator.MoveNext()) &&(smoEnumerator.Current <> Nothing)
            Console.WriteLine("[{0}] {1}",i = Console.WriteLine("[{0}] {1}",i + 1
            End While
 
             smoEnumerator.Reset()
 
            ' Validate the layout of the package
            Dim status As DTSExecResult =  package.Validate(package.Connections,Nothing,Nothing,Nothing) 
            Console.WriteLine("Validation result: " + status)
 
            ' Save the package
            Dim currentDirectory As String =  Environment.CurrentDirectory 
            application.SaveToXml(currentDirectory + PACKAGEFILENAME, package, Nothing)
            Console.WriteLine("Package saved to " + currentDirectory + PACKAGEFILENAME)
        End Sub
    End Class
End Namespace

See Also

Reference

SMOEnumerator Class

Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO Namespace