Получать данные из ASP.NET API с помощью запросов MDX - PullRequest
0 голосов
/ 24 сентября 2019

Когда я запускаю некоторые запросы на SQL Server, он показывает результаты, но когда я выполняю те же самые запросы через ASP.NET, я не могу получить результаты, аналогичные SQL Server.Я смог получить имена столбцов таблицы, но не смог получить данные из этих строк, потому что мои _dt.Rows.Count всегда равны нулю.

public dynamic GetData(string business, string email)
{
        string sConnStr = "...";
        string query = "....";

        DataTable _dt = new DataTable();
        AdomdConnection connection = new AdomdConnection(sConnStr);

        connection.Open();

        AdomdCommand cmd = new AdomdCommand(query, connection);

        var data = cmd.ExecuteReader();
        _dt.Load(data);

        return _dt.Columns;
}

Результаты показывают

{
        "AllowDBNull": true,
        "AutoIncrement": false,
        "AutoIncrementSeed": 0,
        "AutoIncrementStep": 1,
        "Caption": ",,,,,,,",
        "ColumnName": ",,,,,,,,",
        "Prefix": "",
        "DataType": "System.Double, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
        "DateTimeMode": 3,
        "DefaultValue": null,
        "Expression": "",
        "ExtendedProperties": {},
        "MaxLength": -1,
        "Namespace": "",
        "Ordinal": 0,
        "ReadOnly": true,
        "Table": [],
        "Unique": false,
        "ColumnMapping": 1,
        "Site": null,
        "Container": null,
        "DesignMode": false
    },

какэто для всех столбцов.

Как получить доступ к данным, отображаемым в SQL Server?

И еще одна проблема заключается в том, что для некоторых запросов выдается исключение:

Невозможно запросить внутренние вспомогательные структуры для столбца '**' [..], поскольку они не обработаны.Пожалуйста, обновите или пересчитайте таблицу ....

Каков наилучший способ достижения моих результатов?Спасибо

1 Ответ

0 голосов
/ 28 сентября 2019

Вы можете получить результаты через SSAS Cube в asp.net, используя следующий код,

     public DataTable Execute(string mdxQuery)
    {
        using (var connection = new AdomdConnection(this.ConnectionString))
        {
            using (var command = new AdomdCommand(mdxQuery, connection))
            {
                connection.Open();
                using (var dapter = new AdomdDataAdapter(command))
                {
                    var table = new DataTable(connection.Database);
                    dapter.Fill(table);
                    return table;
                }
            }
        }
    }
...