EntityPropertyMappingAttribute 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定实体类型的属性与 WCF Data Services 返回的源中某项的元素之间自定义映射的特性。
public ref class EntityPropertyMappingAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)]
public sealed class EntityPropertyMappingAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)>]
type EntityPropertyMappingAttribute = class
inherit Attribute
Public NotInheritable Class EntityPropertyMappingAttribute
Inherits Attribute
- 继承
- 属性
示例
在以下示例中,类型的 Order
两个属性都映射到现有源元素。 Product
类型的 Item
属性映射到单独的命名空间中的自定义源特性。
using System.Collections.Generic;
using System.Data.Services;
using System.Data.Services.Common;
using System.Linq;
namespace CustomDataService
{
[EntityPropertyMappingAttribute("Customer",
SyndicationItemProperty.AuthorName,
SyndicationTextContentKind.Plaintext, true)]
[EntityPropertyMapping("OrderId",
SyndicationItemProperty.Title,
SyndicationTextContentKind.Plaintext, false)]
[DataServiceKeyAttribute("OrderId")]
public class Order
{
public int OrderId { get; set; }
public string Customer { get; set; }
public IList<Item> Items { get; set; }
}
[EntityPropertyMappingAttribute("Product", "productname",
"orders", "http://schema.examples.microsoft.com/dataservices", true)]
[DataServiceKeyAttribute("Product")]
public class Item
{
public string Product { get; set; }
public int Quantity { get; set; }
}
public partial class OrderItemData
{
#region Populate Service Data
static IList<Order> _orders;
static IList<Item> _items;
static OrderItemData()
{
_orders = new Order[]{
new Order(){ OrderId=0, Customer = "Peter Franken", Items = new List<Item>()},
new Order(){ OrderId=1, Customer = "Ana Trujillo", Items = new List<Item>()}};
_items = new Item[]{
new Item(){ Product="Chai", Quantity=10 },
new Item(){ Product="Chang", Quantity=25 },
new Item(){ Product="Aniseed Syrup", Quantity = 5 },
new Item(){ Product="Chef Anton's Cajun Seasoning", Quantity=30}};
_orders[0].Items.Add(_items[0]);
_orders[0].Items.Add(_items[1]);
_orders[1].Items.Add(_items[2]);
_orders[1].Items.Add(_items[3]);
}
#endregion
public IQueryable<Order> Orders
{
get { return _orders.AsQueryable(); }
}
public IQueryable<Item> Items
{
get { return _items.AsQueryable(); }
}
}
public class OrderItems : DataService<OrderItemData>
{
// This method is called only once to initialize
//service-wide policies.
public static void InitializeService(DataServiceConfiguration
config)
{
config.SetEntitySetAccessRule("Orders",
EntitySetRights.AllRead |
EntitySetRights.AllWrite);
config.SetEntitySetAccessRule("Items",
EntitySetRights.AllRead |
EntitySetRights.AllWrite);
config.DataServiceBehavior.MaxProtocolVersion =
DataServiceProtocolVersion.V2;
}
}
}
Imports System.Collections.Generic
Imports System.Data.Services
Imports System.Data.Services.Common
Imports System.Linq
Namespace CustomDataService
<EntityPropertyMappingAttribute("Customer", _
SyndicationItemProperty.AuthorName, _
SyndicationTextContentKind.Plaintext, True)> _
<EntityPropertyMapping("OrderId", _
SyndicationItemProperty.Title, _
SyndicationTextContentKind.Plaintext, False)> _
<DataServiceKeyAttribute("OrderId")> _
Public Class Order
Private _orderId As Integer
Private _customer As String
Private _items As IList(Of Item)
Public Property OrderId() As Integer
Get
Return _orderId
End Get
Set(ByVal value As Integer)
_orderId = value
End Set
End Property
Public Property Customer() As String
Get
Return _customer
End Get
Set(ByVal value As String)
_customer = value
End Set
End Property
Public Property Items() As IList(Of Item)
Get
Return _items
End Get
Set(ByVal value As IList(Of Item))
_items = value
End Set
End Property
End Class
<EntityPropertyMappingAttribute("Product", "productname", _
"orders", "http://schema.examples.microsoft.com/dataservices", True)> _
<DataServiceKeyAttribute("Product")> _
Public Class Item
Private _product As String
Private _quantity As Integer
Public Property Product() As String
Get
Return _product
End Get
Set(ByVal value As String)
_product = value
End Set
End Property
Public Property Quantity() As Integer
Get
Return _quantity
End Get
Set(ByVal value As Integer)
_quantity = value
End Set
End Property
End Class
Partial Public Class OrderItemData
#Region "Populate Service Data"
Shared _orders As IList(Of Order)
Shared _items As IList(Of Item)
Sub New()
_orders = New Order() { _
New Order() With {.OrderId = 0, .Customer = "Peter Franken", .Items = New List(Of Item)()}, _
New Order() With {.OrderId = 1, .Customer = "Ana Trujillo", .Items = New List(Of Item)()}}
_items = New Item() { _
New Item() With {.Product = "Chai", .Quantity = 10}, _
New Item() With {.Product = "Chang", .Quantity = 25}, _
New Item() With {.Product = "Aniseed Syrup", .Quantity = 5}, _
New Item() With {.Product = "Chef Anton's Cajun Seasoning", .Quantity = 30}}
_orders(0).Items.Add(_items(0))
_orders(0).Items.Add(_items(1))
_orders(1).Items.Add(_items(2))
_orders(1).Items.Add(_items(3))
End Sub
#End Region
Public ReadOnly Property Orders() As IQueryable(Of Order)
Get
Return _orders.AsQueryable()
End Get
End Property
Public ReadOnly Property Items() As IQueryable(Of Item)
Get
Return _items.AsQueryable()
End Get
End Property
End Class
Public Class OrderItems
Inherits DataService(Of OrderItemData)
' This method is called only once to initialize
' service-wide policies.
Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
config.SetEntitySetAccessRule("Orders", _
EntitySetRights.AllRead _
Or EntitySetRights.AllWrite)
config.SetEntitySetAccessRule("Items", _
EntitySetRights.AllRead _
Or EntitySetRights.AllWrite)
config.DataServiceBehavior.MaxProtocolVersion =
DataServiceProtocolVersion.V2
End Sub
End Class
End Namespace
上面的示例为 URI http://myservice/OrderItems.svc/Orders(0)?$expand=Items
返回以下结果。
<entry xml:base="http://localhost:12345/OrderItems.svc/"
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:12345/OrderItems.svc/Orders(0)</id>
<title type="text">0</title>
<updated>2009-07-25T21:12:30Z</updated>
<author>
<name>Peter Franken</name>
</author>
<link rel="edit" title="Order" href="Orders(0)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Items"
type="application/atom+xml;type=feed" title="Items" href="Orders(0)/Items">
<m:inline>
<feed>
<title type="text">Items</title>
<id>http://localhost:12345/OrderItems.svc/Orders(0)/Items</id>
<updated>2009-07-25T21:12:30Z</updated>
<link rel="self" title="Items" href="Orders(0)/Items" />
<entry>
<id>http://localhost:12345/OrderItems.svc/Items('Chai')</id>
<title type="text" />
<updated>2009-07-25T21:12:30Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Item" href="Items('Chai')" />
<category term="CustomDataService.Item"
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:Product>Chai</d:Product>
<d:Quantity m:type="Edm.Int32">10</d:Quantity>
</m:properties>
</content>
<orders:productname
xmlns:orders="http://schema.examples.microsoft.com/dataservices">Chai</orders:productname>
</entry>
<entry>
<id>http://localhost:12345/OrderItems.svc/Items('Chang')</id>
<title type="text" />
<updated>2009-07-25T21:12:30Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Item" href="Items('Chang')" />
<category term="CustomDataService.Item"
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:Product>Chang</d:Product>
<d:Quantity m:type="Edm.Int32">25</d:Quantity>
</m:properties>
</content>
<orders:productname
xmlns:orders="http://schema.examples.microsoft.com/dataservices">Chang</orders:productname>
</entry>
</feed>
</m:inline>
</link>
<category term="CustomDataService.Order"
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:Customer>Peter Franken</d:Customer>
</m:properties>
</content>
</entry>
注解
EntityPropertyMappingAttribute用于在反射提供程序的数据模型中定义自定义源映射。 当用于生成类的元数据指示在数据模型中定义了自定义源映射时,此属性也会应用于生成的客户端数据服务类。 此信息是确保客户端可以创建和使用支持自定义源的消息所必需的。 有关详细信息,请参阅 源自定义。
构造函数
属性
KeepInContent |
获取一个布尔值,该值指示是否应在源的内容部分和映射位置都出现同一属性值。 |
SourcePath |
获取将映射到源的指定元素的联合项的属性名称。 |
TargetNamespacePrefix |
获取一个字符串值,该值与 TargetNamespaceUri 一起指定 TargetPath 元素所在的命名空间。 |
TargetNamespaceUri |
获取一个字符串值,该值指定由 TargetPath 属性指定的元素的命名空间 URI。 |
TargetPath |
获取属性将映射到的源中的自定义目标的名称。 |
TargetSyndicationItem |
获取 SyndicationItem 类的属性。 |
TargetTextContentKind |
获取由 EntityPropertyMappingAttribute 映射的属性的内容类型。 |
TypeId |
在派生类中实现时,获取此 Attribute 的唯一标识符。 (继承自 Attribute) |
方法
Equals(Object) |
返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 Attribute) |
GetHashCode() |
返回此实例的哈希代码。 (继承自 Attribute) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
IsDefaultAttribute() |
在派生类中重写时,指示此实例的值是否是派生类的默认值。 (继承自 Attribute) |
Match(Object) |
当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (继承自 Attribute) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
显式接口实现
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
将一组名称映射为对应的一组调度标识符。 (继承自 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
检索对象的类型信息,然后可以使用该信息获取接口的类型信息。 (继承自 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
检索对象提供的类型信息接口的数量(0 或 1)。 (继承自 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
提供对某一对象公开的属性和方法的访问。 (继承自 Attribute) |