步骤 2:定义实体、方法和筛选器
在业务数据目录中注册的业务线 (LOB) 应用程序可定义实体、可在实体中执行的方法和用于启用最终用户筛选的筛选器。实体是业务对象,如 LOB 应用程序中的 Customer 或 Product。方法是与实体相关的操作,筛选器帮助限制从方法返回的实体实例的数量。
在业务数据目录中,实体属于单个 LOB 系统,必须具有唯一名称。实体包含标识符、方法、筛选器和操作。
在此步骤中,您需要在 AdventureWorks2000 数据库中定义一个名为“产品”的实体,并定义一个用于获取产品列表的名为 GetProducts 的方法。您还需要添加通配符和比较筛选器,使用户可以根据 ID、名称和 ProductNumber 字段进行筛选。
先决条件
步骤 1:连接到 AdventureWorks2000 数据库
定义实体、方法和筛选器
在步骤 1 中打开 AdventureWorks2000.XML 元数据 XML 文件。
插入下面的 XML 以替换该文件中 <!--Insert Entity XML Here --> 部分:
<Entity EstimatedInstanceCount="10000" Name="Product"> <!-- EstimatedInstanceCount is an optional attribute--> <Properties> <Property Name="Title" Type="System.String">Name</Property> </Properties> <Identifiers> <Identifier Name="ProductID" TypeName="System.Int32" /> </Identifiers> <Methods> <!-- Defines a method that brings back Product data from the back-end database.--> <Method Name="GetProducts"> <Properties> <Property Name="RdbCommandText" Type="System.String"> SELECT ProductID, Name, ProductNumber, ListPrice FROM Product WHERE (ProductID >= @MinProductID) AND (ProductID <= @MaxProductID) AND (Name LIKE @Name) AND (ProductNumber LIKE @ProductNumber) </Property> <Property Name="RdbCommandType" Type="System.Data.CommandType">Text</Property> <!-- For database systems, can be Text, StoredProcedure, or TableDirect. --> </Properties> <FilterDescriptors> <!-- Define the filters supported by the back-end method (or sql query) here. --> <FilterDescriptor Type="Comparison" Name="ID" > <Properties> <Property Name="Comparator" Type="System.String">Equals</Property> </Properties> </FilterDescriptor> <FilterDescriptor Type="Wildcard" Name="Name"> <Properties> <Property Name="UsedForDisambiguation" Type="System.Boolean">true</Property> </Properties> </FilterDescriptor> <FilterDescriptor Type="Wildcard" Name="ProductNumber" /> </FilterDescriptors> <Parameters> <Parameter Direction="In" Name="@MinProductID"> <TypeDescriptor TypeName="System.Int32" IdentifierName="ProductID" AssociatedFilter="ID" Name="MinProductID"> <DefaultValues> <DefaultValue MethodInstanceName="ProductFinderInstance" Type="System.Int32">0</DefaultValue> </DefaultValues> </TypeDescriptor> </Parameter> <Parameter Direction="In" Name="@MaxProductID"> <TypeDescriptor TypeName="System.Int32" IdentifierName="ProductID" AssociatedFilter="ID" Name="MaxProductID"> <DefaultValues> <DefaultValue MethodInstanceName="ProductFinderInstance" Type="System.Int32">99999999</DefaultValue> </DefaultValues> </TypeDescriptor> </Parameter> <Parameter Direction="In" Name="@Name"> <TypeDescriptor TypeName="System.String" AssociatedFilter="Name" Name="Name"> <DefaultValues> <DefaultValue MethodInstanceName="ProductFinderInstance" Type="System.String">%</DefaultValue> <DefaultValue MethodInstanceName="ProductSpecificFinderInstance" Type="System.String">%</DefaultValue> </DefaultValues> </TypeDescriptor> </Parameter> <Parameter Direction="In" Name="@ProductNumber"> <TypeDescriptor TypeName="System.String" AssociatedFilter="ProductNumber" Name="ProductNumber"> <DefaultValues> <DefaultValue MethodInstanceName="ProductFinderInstance" Type="System.String">%</DefaultValue> <DefaultValue MethodInstanceName="ProductSpecificFinderInstance" Type="System.String">%</DefaultValue> </DefaultValues> </TypeDescriptor> </Parameter> <Parameter Direction="Return" Name="Products"> <TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="ProductDataReader"> <TypeDescriptors> <TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="ProductDataRecord"> <TypeDescriptors> <TypeDescriptor TypeName="System.Int32" IdentifierName="ProductID" Name="ProductID"> <LocalizedDisplayNames> <LocalizedDisplayName LCID="1033">ID</LocalizedDisplayName> </LocalizedDisplayNames> </TypeDescriptor> <TypeDescriptor TypeName="System.String" Name="Name" > <!-- Do not use the AssociatedFilter attribute in return parameters.--> <LocalizedDisplayNames> <LocalizedDisplayName LCID="1033">Name</LocalizedDisplayName> </LocalizedDisplayNames> <Properties> <Property Name="DisplayByDefault" Type="System.Boolean">true</Property> </Properties> </TypeDescriptor> <TypeDescriptor TypeName="System.String" Name="ProductNumber"> <LocalizedDisplayNames> <LocalizedDisplayName LCID="1033">Product Number</LocalizedDisplayName> </LocalizedDisplayNames> <Properties> <Property Name="DisplayByDefault" Type="System.Boolean">true</Property> </Properties> </TypeDescriptor> <TypeDescriptor TypeName="System.Decimal" Name="ListPrice"> <LocalizedDisplayNames> <LocalizedDisplayName LCID="1033">List Price</LocalizedDisplayName> </LocalizedDisplayNames> </TypeDescriptor> </TypeDescriptors> </TypeDescriptor> </TypeDescriptors> </TypeDescriptor> </Parameter> </Parameters> <MethodInstances> <MethodInstance Name="ProductFinderInstance" Type="Finder" ReturnParameterName="Products" /> <MethodInstance Name="ProductSpecificFinderInstance" Type="SpecificFinder" ReturnParameterName="Products" /> </MethodInstances> </Method> </Methods> <!-- Enter your Action XML here --> </Entity>
保存 XML 文件。
将应用程序定义添加到业务数据目录中。有关详细信息,请参阅如何:将应用程序定义添加到业务数据目录。
通过创建业务数据列表 Web 部件、详细信息 Web 部件、类型的业务数据列、产品或这些项的任意组合,来测试元数据。有关详细信息,请参阅测试元数据。
Next Steps
See Also
任务
AdventureWorks SQL Server 2000 示例