Migrating From ADO MD To ADOMD.NET
Biblioteka ADOMD.NET jest podobne do biblioteki ActiveX Data Objects Multidimensional (ADO MD), rozszerzenie biblioteki obiektów ActiveX Data Objects (ADO), która jest używana do uzyskiwania dostępu do danych wielowymiarowych w Component Object Model (COM) opartych na klient aplikacji.ADO MD zapewnia łatwy dostęp do danych wielowymiarowych niezarządzanego języków, takich jak C++ i Microsoft Program Visual Basic. Program ADOMD.NET zapewnia łatwy dostęp do analizy (zarówno wielowymiarowych oraz wyszukiwanie danych) dane z zarządzanych języków takich jak Microsoft C# i Microsoft Program Visual Basic .NET. Ponadto program ADOMD.NET zapewnia model obiektowy rozszerzonych metadane.
Migracja istniejących aplikacji klient z obiektów ADO MD ADOMD.NET jest łatwe, ale istnieje kilka istotnych różnic w odniesieniu do migracji:
Aby zapewnić dostęp połączenia i dane do aplikacji klienckich
ADO MD
ADOMD.NET
Wymaga odwołania do adodb.dll i adomd.dll.
Wymaga jednego odwołania do Microsoft.AnalysisServices.AdomdClient.dll.
The AdomdConnection class provides connectivity support, in addition to access to metadane.
Aby pobrać metadane dla obiektów wielowymiarowych
ADO MD
ADOMD.NET
Użycie Catalog Klasa.
Użycie Cubes() Właściwość AdomdConnection.
Aby uruchomić kwerendę i przywrócić zestaw komórek obiektów
ADO MD
ADOMD.NET
Użycie CellSet Klasa.
Użycie AdomdCommand Klasa.
Aby uzyskać dostęp do metadane, które służy do wyświetlania zestaw komórek
ADO MD
ADOMD.NET
Użycie Position Klasa.
Użycie Set i Tuple obiekty.
Uwaga
The Position class is supported for backward compatibility.
Pobieranie metadane model wyszukiwania
ADO MD
ADOMD.NET
Nie dostępnych klasy.
Użyj jednej z kolekcji wyszukiwanie danych:
The MiningModelCollection contains a list of every model wyszukiwania in the data urządzenie źródłowe.
The MiningServiceCollection provides information about the available mining algorithms.
The MiningStructureCollection exposes information about the mining structures on the server.
Aby wyróżnić tych różnic w poniższym przykładzie migracji porównuje istniejącego ADO MD aplikacji do aplikacji ADOMD.NET równoważne.
Na przykład migracji
MD istniejących obiektów ADO i równoważne przykłady kodu ADOMD.NET przedstawione w tej sekcji należy wykonać ten sam zestaw akcji: Tworzenie połączenia, uruchomiony instrukcja Multidimensional Expressions (MDX) i pobierania danych i metadane. Jednak te dwa zestawy kodu nie należy używać tych samych obiektów do wykonywania tych zadań.
Istniejący kod ADO MD
The following code example, drawn from ADO MD 2.8 documentation, is written in Microsoft Visual Basic® 6.0 and uses ADO MD to demonstrate how to connect to and query a Microsoft SQL Server data source.W tym przykładzie ADO MD następujące obiekty:
Tworzy połączenie z Catalog obiekt.
Uruchamia, używając instrukcja Multidimensional Expressions (MDX) Cellset obiekt.
Pobiera metadane i danych z Position obiekt pobierane z Cellset obiekt.
Private Sub cmdCellSettoDebugWindow_Click()
Dim cat As New ADOMD.Catalog
Dim cst As New ADOMD.Cellset
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim strServer As String
Dim strSource As String
Dim strColumnHeader As String
Dim strRowText As String
On Error GoTo Error_cmdCellSettoDebugWindow_Click
Screen.MousePointer = vbHourglass
'*-----------------------------------------------------------------------
'* Set server to local host.
'*-----------------------------------------------------------------------
strServer = "LOCALHOST"
'*-----------------------------------------------------------------------
'* Set MDX query string source.
'*-----------------------------------------------------------------------
strSource = strSource & "SELECT "
strSource = strSource & "{[Measures].members} ON COLUMNS,"
strSource = strSource & _
"NON EMPTY [Store].[Store City].members ON ROWS"
strSource = strSource & " FROM Sales"
'*-----------------------------------------------------------------------
'* Set active connection.
'*-----------------------------------------------------------------------
cat.ActiveConnection = "Data Source=" & strServer & _
";Provider=msolap;"
'*-----------------------------------------------------------------------
'* Set cellset source to MDX query string.
'*-----------------------------------------------------------------------
cst.Source = strSource
'*-----------------------------------------------------------------------
'* Set cellset active connection to current connection
'*-----------------------------------------------------------------------
Set cst.ActiveConnection = cat.ActiveConnection
'*-----------------------------------------------------------------------
'* Open cellset.
'*-----------------------------------------------------------------------
cst.Open
'*-----------------------------------------------------------------------
'* Allow space for row header text.
'*-----------------------------------------------------------------------
strColumnHeader = vbTab & vbTab & vbTab & vbTab & vbTab & vbTab
'*-----------------------------------------------------------------------
'* Loop through column headers.
'*-----------------------------------------------------------------------
For i = 0 To cst.Axes(0).Positions.Count - 1
strColumnHeader = strColumnHeader & _
cst.Axes(0).Positions(i).Members(0).Caption & vbTab & _
vbTab & vbTab & vbTab
Next
Debug.Print vbTab & strColumnHeader & vbCrLf
'*-----------------------------------------------------------------------
'* Loop through row headers and provide data for each row.
'*-----------------------------------------------------------------------
strRowText = ""
For j = 0 To cst.Axes(1).Positions.Count - 1
strRowText = strRowText & _
cst.Axes(1).Positions(j).Members(0).Caption & vbTab & _
vbTab & vbTab & vbTab
For k = 0 To cst.Axes(0).Positions.Count - 1
strRowText = strRowText & cst(k, j).FormattedValue & _
vbTab & vbTab & vbTab & vbTab
Next
Debug.Print strRowText & vbCrLf
strRowText = ""
Next
Screen.MousePointer = vbDefault
Exit Sub
Error_cmdCellSettoDebugWindow_Click:
Beep
Screen.MousePointer = vbDefault
MsgBox "The following error has occurred:" & vbCrLf & _
Err.Description, vbCritical, " Error!"
Exit Sub
End Sub
Równoważne ADOMD.NET kodu
Poniższy przykład napisane w języku Visual Basic .NET i za pomocą ADOMD.NET, pokazuje, jak wykonywać te same czynności, jak w poprzednim przykładzie kodu języka Visual Basic 6.0.Główna różnica między w poniższym przykładzie, a wcześniej podanym przykładzie ADO MD jest obiekty, które są używane do wykonywania akcji.W przykładzie ADOMD.NET używa następujących obiektów:
Tworzy połączenie z AdomdConnection obiekt.
Uruchamia, używając instrukcja MDX AdomdCommand obiekt.
Pobiera metadane i danych z Set obiekt pobierane z Cellset obiekt.
Private Sub DisplayCellSetInOutputWindow()
Dim conn As AdomdConnection
Dim cmd As AdomdCommand
Dim cst As CellSet
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim strServer As String = "LOCALHOST"
Dim strSource As String = "SELECT [Measures].members ON COLUMNS, " & _
"NON EMPTY [Store].[Store City].members ON ROWS FROM SALES"
Dim strOutput As New System.IO.StringWriter
'*-----------------------------------------------------------------------
'* Open connection.
'*-----------------------------------------------------------------------
Try
' Create a new AdomdConnection object, providing the connection
' string.
conn = New AdomdConnection("Data Source=" & strServer & _
";Provider=msolap;")
' Open the connection.
conn.Open()
Catch ex As Exception
Throw New ApplicationException( _
"An error occurred while connecting.")
End Try
Try
'*-----------------------------------------------------------------------
'* Open cellset.
'*-----------------------------------------------------------------------
' Create a new AdomdCommand object, providing the MDX query string.
cmd = New AdomdCommand(strSource, conn)
' Run the command and return a CellSet object.
cst = cmd.ExecuteCellSet()
'*-----------------------------------------------------------------------
'* Concatenate output.
'*-----------------------------------------------------------------------
' Include spacing to account for row headers.
strOutput.Write(vbTab, 6)
' Iterate through the first axis of the CellSet object and
' retrieve column headers.
For i = 0 To cst.Axes(0).Set.Tuples.Count - 1
strOutput.Write(cst.Axes(0).Set.Tuples(i).Members(0).Caption)
strOutput.Write(vbTab, 4)
Next
strOutput.WriteLine()
' Iterate through the second axis of the CellSet object and
' retrieve row headers and cell data.
For j = 0 To cst.Axes(1).Set.Tuples.Count - 1
' Append the row header.
strOutput.Write(cst.Axes(1).Set.Tuples(j).Members(0).Caption)
strOutput.Write(vbTab, 4)
' Append the cell data for that row.
For k = 0 To cst.Axes(0).Set.Tuples.Count - 1
strOutput.Write(cst.Cells(k, j).FormattedValue)
strOutput.Write(vbTab, 4)
Next
strOutput.WriteLine()
Next
' Display the output.
Debug.WriteLine(strOutput.ToString)
'*-----------------------------------------------------------------------
'* Release resources.
'*-----------------------------------------------------------------------
conn.Close()
Catch ex As Exception
' Ignore or handle errors.
Finally
cst = Nothing
cmd = Nothing
conn = Nothing
End Try
End Sub