导出 (0) 打印
全部展开

创建固定查询应用程序

更新时间: 2014年2月

 

DataMarket 徽标

在 Visual Studio 中使用可下载的“服务类”可以编程方式使用数据发布者指定为固定查询数据集的 Marketplace 数据集。

在继续操作之前,请确保你满足以下条件:

  • 拥有一个有效的 Windows Live ID 帐户。如果你没有 Live ID,请转到 Windows Live 主页并注册。

  • 拥有一个有效的 Marketplace 帐户。如果你没有 Marketplace,请转到主题创建 Marketplace 帐户,并按照该处的说明进行操作。

  • 要在应用程序中使用的 Marketplace 固定查询数据集的订阅。如果你未订阅固定查询数据集,请转到订阅数据产品,并按照该处的说明进行操作。

 

部分 说明

步骤 1:在 Visual Studio 中创建项目

为了启动新控制台项目以使用 Marketplace 数据而要在 Visual Studio 中执行的步骤。

步骤 2:添加数据服务的服务类

添加服务引用以使用 Marketplace 数据而需要执行的步骤。

步骤 3:添加 System.Data.Services.Client

在项目中添加对 System.Data.Services.Client 的引用。

步骤 4:通过托管代码使用数据

为了使用 Marketplace 固定查询数据集而要编写的代码。

完成的程序代码

已完成程序的代码。

元数据

此固定查询类的示例 XML 元数据。

启动 Visual Studio

  1. 在“开始”菜单中找到“Visual Studio”。

  2. 右键单击“Visual Studio”。

  3. 在下拉菜单中,单击“以管理员身份运行”。

  4. 当系统询问你是否允许此程序 (devenv.exe) 对计算机进行更改时,请单击“是”。

创建新项目

  1. 在 Visual Studio 开始页上,选择“新建项目...”。

  2. 在“新建项目”对话框中选择“Visual C#”和“控制台应用程序”(“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”数据服务。

  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 的引用。

将 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. 在 CensusDemographicData 类中创建一个返回泛型列表的公共方法 (Sub)。
    对于本程序,泛型类型为 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;
            }
        }
    }
    
    

编写 Main()

  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。如果你的 IDE 不支持 intellisense,或者 intellisense 无法正常工作,那么你可以从服务中获取元数据。

  1. 获取数据集的服务根 URI。
    有关如何获取服务根 URI 的说明,请参阅Get the Service Root URL 部分。

  2. 在服务根 URL 的末尾添加 /$metadata
    例如,如果服务根 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”数据服务。


<?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>

元数据中的重要信息包括:

  • 你在此数据集中调用的,以请求数据的固定 Web 函数的名称及其返回的类型。
    <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">


显示:
© 2015 Microsoft