Compartir a través de


Cómo: Personalizar fuentes con el proveedor de Entity Framework (WCF Data Services)

Servicios de datos de Microsoft WCF le permite personalizar la serialización Atom en una respuesta del servicio de datos para que las propiedades de una entidad se puedan asignar a los elementos no usados que se definen en el protocolo AtomPub. En este tema se explica cómo definir los atributos de asignación para los tipos de entidad en un modelo de datos definido en un archivo .edmx utilizando el proveedor de Entity Framework. Para obtener más información, vea Personalización de fuentes (WCF Data Services).

En este tema modificará manualmente el archivo .edmx generado por la herramienta que contiene el modelo de datos. Dado que Entity Designer no admite las extensiones al modelo de datos, debe modificar manualmente el archivo. Para obtener más información sobre el archivo .edmx generado por las herramientas de Entity Data Model, vea .edmx File Overview (Entity Framework). En el ejemplo de este tema se usan el servicio de datos de ejemplo Northwind y las clases del servicio de datos del cliente generadas automáticamente. Se crean este servicio y las clases de datos del cliente al completar el tutorial rápido de WCF Data Services.

Para modificar manualmente el archivo Northwind.edmx para agregar los atributos de personalización de fuente

  1. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el archivo Northwind.edmx y, a continuación, elija Abrir con.

  2. En el cuadro de diálogo Abrir con - Northwind.edmx, seleccione Editor XML y, a continuación, haga clic en Aceptar.

  3. Busque el elemento ConceptualModels y reemplace el tipo de entidad Customers existente con el siguiente elemento que contiene los atributos de asignación de personalización de la fuente:

    <EntityType Name="Customer"
                m:FC_SourcePath="CustomerID"
                m:FC_TargetPath="SyndicationTitle"
                m:FC_ContentKind="text"
                m:FC_KeepInContent="true">
      <Key>
        <PropertyRef Name="CustomerID" />
      </Key>
      <Property Name="CustomerID" Type="String" Nullable="false" MaxLength="5" 
                Unicode="true" FixedLength="true" />
      <Property Name="ContactName" Type="String" MaxLength="30"
          Unicode="true" FixedLength="false"
          m:FC_TargetPath="SyndicationAuthorName"
          m:FC_ContentKind="text"
          m:FC_KeepInContent="true"
          />
      <Property Name="CompanyName" Type="String" Nullable="false"
                MaxLength="40" Unicode="true" FixedLength="false"
                m:FC_TargetPath="CompanyName"
                m:FC_NsPrefix="Northwind"
                m:FC_NsUri="http://schemas.examples.microsoft.com/dataservices"
                m:FC_KeepInContent="true"
          />
      <Property Name="ContactTitle" Type="String" MaxLength="30" Unicode="true" FixedLength="false" 
                m:FC_TargetPath="SyndicationLinkHref"
                m:FC_ContentKind="text"
                m:FC_KeepInContent="true"
                m:FC_Criteria="SyndicationLinkRel"
                m:FC_CriteriaValue="http://NorthwindTraders.com/MyPhotos" />
      <Property Name="Address" Type="String" MaxLength="60" Unicode="true" FixedLength="false" />
      <Property Name="City" Type="String" MaxLength="15" Unicode="true" FixedLength="false" />
      <Property Name="Region" Type="String" MaxLength="15" Unicode="true" FixedLength="false" />
      <Property Name="PostalCode" Type="String" MaxLength="10" Unicode="true" FixedLength="false" />
      <Property Name="Country" Type="String" MaxLength="15" Unicode="true" FixedLength="false" />
      <Property Name="Phone" Type="String" MaxLength="24" Unicode="true" FixedLength="false" />
      <Property Name="Fax" Type="String" MaxLength="24" Unicode="true" FixedLength="false" />
      <NavigationProperty Name="Orders" Relationship="NorthwindModel.FK_Orders_Customers" 
                          FromRole="Customers" ToRole="Orders" />
    </EntityType>
    
  4. Guarde los cambios y cierre el archivo Northwind.edmx.

  5. (Opcional) Haga clic con el botón secundario en el archivo Northwind.edmx y, a continuación, haga clic en Ejecutar herramienta personalizada.

    Esto regenera el archivo de capa de objeto, que puede ser necesario.

  6. Compile de nuevo el proyecto.

Ejemplo

En el ejemplo anterior se devuelve el resultado siguiente para el URI http://myservice/Northwind.svc/Customers('ALFKI').

<entry xml:base="https://localhost:12345/Northwind.svc/" 
       xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
       xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
       xmlns="http://www.w3.org/2005/Atom">
  <id>https://localhost:12345/Northwind.svc/Customers('ALFKI')</id>
  <title type="text">ALFKI</title>
  <updated>2009-07-27T07:59:43Z</updated>
  <author>
    <name>Peter Franken</name>
  </author>
  <link rel="edit" title="Customers" href="Customers('ALFKI')" />
  <link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" 
        type="application/atom+xml;type=feed" title="Orders" 
        href="Customers('ALFKI')/Orders" />
  <category term="NorthwindModel.Customers" 
            scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
  <content type="application/xml">
    <m:properties>
      <d:ContactName>Peter Franken</d:ContactName>
      <d:CompanyName>Alfreds Futterkiste</d:CompanyName>
      <d:ContactTitle>Marketing Manager</d:ContactTitle>
      <d:Address>Obere Str. 57</d:Address>
      <d:City>Berlin</d:City>
      <d:Region m:null="true" />
      <d:PostalCode>12209</d:PostalCode>
      <d:Country>Germany</d:Country>
      <d:Phone>089-0877310</d:Phone>
      <d:Fax>089-0877554</d:Fax>
    </m:properties>
  </content>
  <Northwind:CompanyName 
    xmlns:Northwind="http://schemas.examples.microsoft.com/dataservices">Alfreds Futterkiste</Northwind:CompanyName>
</entry>

Vea también

Conceptos

Proveedor de Entity Framework (WCF Data Services)