Создание приложения фиксированного запроса

Обновлено: Февраль 2014 г.

 

Эмблема DataMarket

Используйте доступные для загрузки классы служб в Visual Studio для программного обращения к наборам данных Marketplace, помеченных издателем данных как наборы данных фиксированных запросов.

Прежде чем продолжить, убедитесь в наличии следующего:

  • Действительная учетная запись Windows Live ID. Если у вас еще нет учетной записи Live ID, зарегистрироваться для ее получения можно на домашней странице Windows Live.

  • Действительная учетная запись Marketplace. Если учетной записи Marketplace нет, перейдите к разделу Создание учетной записи Marketplace и следуйте указанным в нем инструкциям.

  • Подписка на набор данных фиксированного запроса Marketplace, который будет использован в приложении. Если подписка на набор данных фиксированного запроса отсутствует, перейдите в раздел Подписка на предложение данных и следуйте указанным в нем инструкциям.

 

Раздел Описание

Шаг 1. Создание проекта в Visual Studio

Действия, выполняемые в Visual Studio, чтобы начать новый консольный проект с целью потребления данных Marketplace.

Шаг 2. Добавление класса служб в службу данных

Действия, выполняемые для добавления ссылки на службу с целью последующего обращения к данным Marketplace.

Шаг 3. Добавление System.Data.Services.Client

Добавьте в проект ссылку на System.Data.Services.Client.

Шаг 4. Использование данных с помощью управляемого кода

Код, предназначенный для использования набора данных фиксированного запроса Marketplace.

Полный код программы

Код полной программы.

Метаданные

Пример метаданных XML для данного фиксированного класса запросов.

  1. Найдите Visual Studio в меню "Пуск".

  2. Щелкните правой кнопкой мыши Visual Studio.

  3. В раскрывающемся меню щелкните Запуск от имени администратора.

  4. В ответ на запрос, следует ли разрешить этой программе (devenv.exe) вносить изменения на вашем компьютере, нажмите кнопку Да.

  1. На начальной странице Visual Studio выберите Создать проект….

  2. Выберите Visual C# и консольное приложение (Visual Basic и консольное приложение, если используется Visual Basic) в диалоговом окне "Новый проект".

  3. В левом раскрывающемся списке в верхней части диалогового окна Создать проект выберите .NET Framework 4.

    По умолчанию в Visual Studio 2010 используется .NET Framework 4. При использовании более ранней версии Visual Studio и отсутствии установленной платформы .NET Framework 4 перейдите на страницу загрузки .NET Framework 4, чтобы загрузить и установить ее.

  4. Присвойте проекту понятное имя. Например, для этого проекта можно указать имя CensusDemographics.

  5. Нажмите кнопку ОК.

После запуска Visual Studio с правами администратора и создания нового консольного приложения (шаг 1) загрузите и добавьте класс службы для службы данных, которую требуется использовать.

  1. Перейдите в раздел Marketplace.

  2. Перейдите на вкладку Мои данные.

  3. Найдите службу данных Alteryx – Census Demographic Data ("Alteryx — демографические данные переписи населения").

  4. Щелкните Использовать справа от имени службы.
    Вы перейдете в раздел "Страница сведений".

  5. Щелкните Библиотека классов .NET C# в правой части страницы.

    Рис. 6.2. Библиотека классов для фиксированных запросов


    Рис. 1. Загрузка библиотеки классов .NET C#

  6. В диалоговом окне нажмите кнопку Сохранить.

  7. Сохраните файл CensusDemographicDataContainer.cs в папку проекта.

    TipСовет
    Если в этом проекте планируется использовать более одной службы данных одного издателя, убедитесь, что каждый файл библиотеки классов имеет уникальное и значимое имя, чтобы одни файлы класса служб не перезаписывали другие.

  1. Вернитесь в проект Visual Studio.

  2. В обозревателе решений щелкните правой кнопкой мыши имя проекта (выделенное полужирным шрифтом).

  3. Выберите Добавить существующий элемент в раскрывающемся меню.

  4. Выберите прокси-класс служб, который был только что загружен в папку проекта.

  5. Нажмите кнопку Добавить.

  6. Дважды щелкните имя файла в обозревателе решений.

  7. Найдите пространство имен для этого класса служб.
    Например, namespace Alteryx.

  8. Добавьте следующий код в верхнюю часть любых файлов кода, в которых используются наборы данных Marketplace.

    
    using System.Net;  // needed for authentication
    using Alteryx;     // the namespace of your service class
    
    

Если в одном приложении используется несколько наборов данных, повторите шаги с 2 по 8 для каждой службы данных.

Помимо класса служб для набора данных в проект необходимо добавить ссылку на клиент System.Data.Services.Client.

  1. Откройте Обозреватель решений.

  2. Щелкните правой кнопкой мыши Ссылки.

  3. В раскрывающемся меню выберите Добавить ссылку.

  4. В диалоговом окне щелкните вкладку .NET.

  5. Найдите System.Data.Services.Client.

  6. Нажмите кнопку "ОК".

После того как классы служб были правильно импортированы и была добавлена ссылка на клиент System.Data.Services.Client, можно вызывать методы класса контейнеров для формирования адресованных набору данных запросов.

В следующем коде определяется простое консольное приложение, использующее набор данных CensusDemographicDataContainer.cs. Важно запомнить, какой именно набор данных используется, поскольку классы служб предварительно настроили методы, представляющие параметры служб в качестве строго типизированных параметров метода в коде приложения, а символические имена объектов классов служб являются уникальными для набора данных.

  1. Создайте общий класс CensusDemographicData в пространстве имен проекта.

  2. Создайте две частные переменные внутри этого класса.

    1. Идентификатор URI службы.
      private Uri serviceUri;

    2. Контейнер службы для учетных данных аутентификации.
      private CensusDemographicDataContainer context;

    
    class CensusDemographicData
    {
        private Uri serviceUri;
        private CensusDemographicDataContainer context;
    }
    
    
  3. Добавьте конструктор для класса CensusDemographicData.
    Конструктор инициализирует обе частные переменные и учетные данные пользователя.
    ROOT_SERVICE_URL является корневым URL-адресом службы. (См. инструкции по нахождению корневого URL-адреса службы в разделе Get the Service Root URL).
    context является контейнером служб, который используется для учетных данных пользователя.
    Для свойства IgnoreMissingProperties задано значение true, что делает клиента устойчивым к свойствам, добавляемым в этот тип на сервере. (См. дополнительную информацию в документации MSDN).
    USER_ID является вашим Live ID.
    SECURE_ACCOUNT_KEY является ключом учетной записи Marketplace, который используется для данного приложения. См. в разделе Управление учетной записью Marketplace

    
    class CensusDemographicData
    {
        private Uri serviceUri;
        private CensusDemographicDataContainer context;
    
        // class constructor
        public CensusDemographicData()
        {
            serviceUri = new Uri(ROOT_SERVICE_URL);
            context = new CensusDemographicDataContainer(serviceUri);
            context.IgnoreMissingProperties = true;
            context.Credentials = new NetworkCredential(USER_ID, 
                                                        SECURE_ACCOUNT_KEY);
        }
    }
    
    
  4. Создайте открытый метод (Sub) в классе CensusDemographicData, который возвращает универсальный список.
    Для нашей программы универсальный тип — CensusDemographicDataEntity.
    Этот метод отправляет запрос службе данных и в случае успешного выполнения возвращает результирующий набор в виде IList<> (IList (Of )). Если по какой-либо причине запрос завершился ошибкой, этот метод возвращает null (Nothing).

    
    class CensusDemographicData
    {
        private Uri serviceUri;
        private CensusDemographicDataContainer context;
        // constructor
        public CensusDemographicData()
        {
            serviceUri = new Uri(ROOT_SERVICE_URL);
            context = new CensusDemographicDataContainer(serviceUri);
            context.IgnoreMissingProperties = true;
            context.Credentials = new NetworkCredential(USER_ID, 
                                                        SECURE_ACCOUNT_KEY);
        }
    
        // the method that queries the service and returns the IList<> of demographic data
        public IList<CensusDemographicDataEntity> GetCensusDemographicData()
        {
            IEnumerable<CensusDemographicDataEntity> query;
    
            query = context.GetCensusDemographicData(LONGITUDE,LATITUDE,RADIUS,null);
            // The function GetCensusDemographicData is the fixed web function that you can use to request data from this service
            //    It is found in the service class you downloaded and added to your project.
            // Note: either of the last two parameters may be null but both cannot be null
    
            try
            {
                return query.ToList();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Census ERROR {0}",ex.Message);
                return null;
            }
        }
    }
    
    

  1. Запишите свой метод Main() (Sub Main()) с двумя закрытыми переменными.
    Универсальный список IList, который получает список данных из вашего метода.
    Переменная для создания экземпляра класса.

    
    static void Main(string[] args)
    {
        IList<CensusDemographicDataEntity> demographicsList;
        CensusDemographicData dataClass; 
    }
    
    
  2. Добавьте код в метод main, выполняющий ваш класс и его метод.

    1. Создайте экземпляр класса CensusDemographicdata.

    2. Вызовите общий метод GetCensusDemographicData.

    3. Если этот метод возвращает список, выполните циклическую обработку списка и напечатайте содержимое.

    
    static void Main(string[] args)
    {
        IList<CensusDemographicDataEntity> demographicList;
        CensusDemographicData dataClass; 
    
        dataClass = new CensusDemographicData();
        demographicsList = dataClass.GetCensusDemographicData();
    
        if (demographicsList != null)
        {
            Console.WriteLine("Demographic Data");
            Console.WriteLine("0,-15} {1,10} {2,6} {3,4}", "Name", 
                                                           "Population", 
                                                           "Female", 
                                                           "Male");
            foreach (CensusDemographicDataEntity entity in demographicList)
                Console.WriteLine("{0,-15} {1,10} {2,6} {3,4}", entity.NAME,
                                                                entity.POP00,
                                                                entity.SEX00FEM,
                                                                entity.SEX00MAL);
                }
                Console.Write("Tap any key to end. ");
                Console.ReadKey();
        }
    }
    
    


using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;           // needed for authentication
using System.Text;
using Alteryx;              // service class for this data service

namespace FixedDataQuery
{
    //============================================ Program class
    class Program
    {
        static void Main(string[] args)
        {
            IList<CensusDemographicDataEntity> demographicList;
            CensusDemographicData censusData = new CensusDemographicData();
            demographicList = censusData.GetCensusDemographicData();

            //============================================ CENSUS DEMOGRAPHIC DATA OUTPUT
            // confirm data was returned from query
            if (demographicList != null)
            {
                // print column headings
                Console.WriteLine("Demographic Data");
                Console.WriteLine("{0,-15} {1,10} {2,6} {3,4}", "Name", 
                                                                "Population", 
                                                                "Female", 
                                                                "Male");
                // print query results
                foreach (CensusDemographicDataEntity entity in demographicList)
                    Console.WriteLine("{0,-15} {1,10} {2,6} {3,4}", entity.NAME,
                                                                    entity.POP00,
                                                                    entity.SEX00FEM,
                                                                    entity.SEX00MAL);
            }
            // pause until a key is struck
            Console.Write("Tap any key to end. ");
            Console.ReadKey();
            Console.WriteLine();
        }
    }

    //============================================ CensusDemographicData class
    class CensusDemographicData
    {
        private const string USER_ID = "yourLiveId";
        private const string SECURE_ACCOUNT_ID = "yourMarketplaceAccountKey";  // not your Live password
        private const string ROOT_SERVICE_URL = "https://api.datamarket.azure.com/Data.ashx/Alteryx/CensusDemographicData";

        private const double LONGITUDE = 47.394;
        private const double LATITUDE = -122.392;
        private const double RADIUS = 10.0; 

        private Uri serviceUri;
        private CensusDemographicDataContainer context;

        // ------ constructor
        public CensusDemographicData()
        {
            serviceUri = new Uri(ROOT_SERVICE_URL);
            context = new CensusDemographicDataContainer(serviceUri);
            context.IgnoreMissingProperties = true;
            context.Credentials = new NetworkCredential(USER_ID,
                                                        SECURE_ACCOUNT_ID);
        }

        // ------ method that queries the dataset and returns the resultset (or null)
        public IList<CensusDemographicDataEntity> GetCensusDemographicData()
        {
            IEnumerable<CensusDemographicDataEntity> query;

            query = context.GetCensusDemographicData(LONGITUDE,LATITUDE,RADIUS,null);
            // The function GetCensusDemographicData is the fixed web function that you can use to request data from this service
            // Note: either of the last two parameters may be null but both cannot be null

            try
            {
                return query.ToList();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Census ERROR {0}",ex.Message);
                return null;
            }
        }
    }
}

Метаданные набора данных информируют Intellisense по мере создания кода. Если интегрированная среда разработки не поддерживает Intellisense или Intellisense не работает, метаданные можно получить из службы.

  1. Получите корневой URI службы набора данных.
    См. инструкции по получению корневого URI службы в разделе Get the Service Root URL.

  2. Добавьте /$metadata в конец корневого URL-адреса службы.
    Например, если корневой URL-адрес службы имеет вид https://datamarket.azure.com/Data.ashx/fabrikam.com/inventory, то URL-адрес метаданных — https://datamarket.azure.com/Data.ashx/fabrikam.com/inventory/$metadata.

  3. Введите URL-адрес метаданных в браузере.

  4. Выполните синтаксический анализ метаданных.
    Следующие метаданные — для службы данных Alteryx – Census Demographic Data ("Alteryx — демографические данные переписи населения").


<?xml version="1.0" encoding="utf-8" ?> 
<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" xmlns:dr="http://schemas.microsoft.com/dallas/2010/04">
   <edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="1.0">
      <Schema xmlns="http://schemas.microsoft.com/ado/2009/08/edm" Namespace="Alteryx" Alias="Alteryx">
         <EntityContainer Name="CensusDemographicDataContainer">
            <EntitySet Name="CensusDemographicDataEntitySet" EntityType="Alteryx.CensusDemographicDataEntity" /> 
                   <FunctionImport Name="GetCensusDemographicData" EntitySet="CensusDemographicDataEntitySet" ReturnType="Collection(Alteryx.CensusDemographicDataEntity)">
               <Parameter Name="Latitude" Type="Edm.Double" Mode="In" Nullable="false" /> 
               <Parameter Name="Longitude" Type="Edm.Double" Mode="In" Nullable="false" /> 
               <Parameter Name="Radius" Type="Edm.Double" Mode="In" Nullable="true" /> 
               <Parameter Name="Minutes" Type="Edm.Double" Mode="In" Nullable="true" /> 
            </FunctionImport>
         </EntityContainer>
         <EntityType Name="CensusDemographicDataEntity">
            <Property Name="NAME" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="KEY" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="POP00" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="SEX00FEM" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XSEX00FEM" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="SEX00MAL" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XSEX00MAL" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE000004" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE000509" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE001013" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE001014" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE001417" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE001820" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE002024" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE002124" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE002529" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE003034" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE003539" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE004044" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE004549" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE005054" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE00GT55" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE005559" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE006064" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE006569" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE007074" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE007579" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE008084" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XAGE00G85" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="AGE00MED" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00GR911" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00ASSOC" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00BACH" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00GRAD" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00HSCH" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00NSCH" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00LTGR9" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XEDU00SCOLL" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00AMIND" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00ASIAN" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00BLACK" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIS00HISP" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00HAWAI" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIS00NHISP" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00OTHER" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00MULT" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XRAC00WHITE" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN00LT10" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN001015" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN001520" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN002025" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN002530" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN003035" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN003540" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN004045" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN004550" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN005060" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN006075" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN0075100" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN0010025" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN0012550" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN0015020" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XHIN00GT200" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="HIN00MED" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="INC00AVEHH" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="INC00PCI" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="HOO00MEDN" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI00BF69" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI007079" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI008089" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI009094" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI009598" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="XYMI009900" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="HOU00STAB" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
            <Property Name="HOU00TURN" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" /> 
         </EntityType>
      </Schema>
   </edmx:DataServices>
</edmx:Edmx>

К числу важных сведений, обнаруженных в метаданных, относятся следующие:

  • Имя фиксированной веб-функции для данного набора данных, который вызывается, чтобы запросить данные и возвращаемый ими тип.
    <FunctionImport Name="GetCensusDemographicData" EntitySet="CensusDemographicDataEntitySet" ReturnType="Collection(Alteryx.CensusDemographicDataEntity)">


  • Порядок параметров, передаваемых в функцию, а также имя, тип, режим и обязательность для каждого параметра.
    <Parameter Name="Latitude" Type="Edm.Double" Mode="In" Nullable="false" />
    <Parameter Name="Longitude" Type="Edm.Double" Mode="In" Nullable="false" />
    <Parameter Name="Radius" Type="Edm.Double" Mode="In" Nullable="true" />
    <Parameter Name="Minutes" Type="Edm.Double" Mode="In" Nullable="true" />
    Обратите внимание, что два параметра требуют значения (Nullable="false"), а для двух других значения не являются обязательными (Nullable="true").


  • Имя, тип данных, является ли null (Nothing) допустимым значением для возвращаемых полей.
    <Property Name="HOU00TURN" Type="Edm.String" Nullable="true" dr:Queryable="false" dr:Returned="true" />
    Обратите внимание, что в наборе данных фиксированного запроса атрибут dr:Queryable всегда равен “false”.


  • Имя сущности этого набора данных.
    <EntityType Name="CensusDemographicDataEntity">


  • Имя контейнера для этого набора данных.
    <EntityContainer Name="CensusDemographicDataContainer">


Показ: