Especificação de CSDLCSDL Specification

O CSDL (linguagem de definição de esquema conceitual) é uma linguagem baseada em XML que descreve as entidades, as relações e as funções que compõem um modelo conceitual de um aplicativo controlado por dados.Conceptual schema definition language (CSDL) is an XML-based language that describes the entities, relationships, and functions that make up a conceptual model of a data-driven application. Esse modelo conceitual pode ser usado pelo Entity Framework ou WCF Data Services.This conceptual model can be used by the Entity Framework or WCF Data Services. Os metadados que são descritos com CSDL são usados pelo Entity Framework para mapear entidades e relações que são definidas em um modelo conceitual para uma fonte de dados.The metadata that is described with CSDL is used by the Entity Framework to map entities and relationships that are defined in a conceptual model to a data source. Para obter mais informações, consulte Especificação de SSDL e especificação MSL.For more information, see SSDL Specification and MSL Specification.

CSDL é a implementação do Entity Framework do Modelo de Dados de Entidade.CSDL is the Entity Framework's implementation of the Entity Data Model.

Em um aplicativo Entity Framework, os metadados do modelo conceitual são carregados de um arquivo. CSDL (escrito em CSDL) em uma instância do System. Data. Metadata. Edm. EdmItemCollection e é acessível usando métodos na classe System. Data. Metadata. Edm. MetadataWorkspace.In an Entity Framework application, conceptual model metadata is loaded from a .csdl file (written in CSDL) into an instance of the System.Data.Metadata.Edm.EdmItemCollection and is accessible by using methods in the System.Data.Metadata.Edm.MetadataWorkspace class. Entity Framework usa metadados de modelo conceitual para converter consultas em relação ao modelo conceitual para comandos específicos da fonte de dados.Entity Framework uses conceptual model metadata to translate queries against the conceptual model to data source-specific commands.

O designer do EF armazena informações do modelo conceitual em um arquivo. edmx em tempo de design.The EF Designer stores conceptual model information in an .edmx file at design time. No momento da compilação, o designer do EF usa informações em um arquivo. edmx para criar o arquivo. CSDL necessário pelo Entity Framework em tempo de execução.At build time, the EF Designer uses information in an .edmx file to create the .csdl file that is needed by Entity Framework at runtime.

As versões de CSDL são diferenciadas por namespaces XML.Versions of CSDL are differentiated by XML namespaces.

Versão de CSDLCSDL Version Namespace XMLXML Namespace
CSDL v1CSDL v1 https://schemas.microsoft.com/ado/2006/04/edm
CSDL v2CSDL v2 https://schemas.microsoft.com/ado/2008/09/edm
CSDL v3CSDL v3 https://schemas.microsoft.com/ado/2009/11/edm

 

Elemento Association (CSDL)Association Element (CSDL)

Um elemento Association define uma relação entre dois tipos de entidade.An Association element defines a relationship between two entity types. Uma associação deve especificar os tipos de entidade que estão envolvidos na relação e o número possível de tipos de entidade em cada extremidade da relação, que é conhecida como multiplicidade.An association must specify the entity types that are involved in the relationship and the possible number of entity types at each end of the relationship, which is known as the multiplicity. A multiplicidade de uma extremidade de associação pode ter um valor de um (1), zero ou um (0.. 1) ou muitos ( * ).The multiplicity of an association end can have a value of one (1), zero or one (0..1), or many (*). Essas informações são especificadas em dois elementos finais filho.This information is specified in two child End elements.

Instâncias de tipo de entidade em uma extremidade de uma associação podem ser acessadas por meio de propriedades de navegação ou chaves estrangeiras, se forem expostas em um tipo de entidade.Entity type instances at one end of an association can be accessed through navigation properties or foreign keys, if they are exposed on an entity type.

Em um aplicativo, uma instância de uma associação representa uma associação específica entre instâncias de tipos de entidade.In an application, an instance of an association represents a specific association between instances of entity types. As instâncias de associação são agrupadas logicamente em um conjunto de associações.Association instances are logically grouped in an association set.

Um elemento Association pode ter os seguintes elementos filho (na ordem listada):An Association element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Final (exatamente 2 elementos)End (exactly 2 elements)
  • ReferentialConstraint (zero ou um elemento)ReferentialConstraint (zero or one element)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento Association .The table below describes the attributes that can be applied to the Association element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome da associação.The name of the association.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento Association .Any number of annotation attributes (custom XML attributes) may be applied to the Association element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento Association que define a associação CustomerOrders quando chaves estrangeiras não foram expostas nos tipos de entidade Customer e Order .The following example shows an Association element that defines the CustomerOrders association when foreign keys have not been exposed on the Customer and Order entity types. Os valores de multiplicidade para cada extremidade da Associação indicam que muitos pedidos podem ser associados a um cliente, mas somente um cliente pode ser associado a um pedido.The Multiplicity values for each End of the association indicate that many Orders can be associated with a Customer, but only one Customer can be associated with an Order. Além disso, o elemento OnDelete indica que todos os pedidos relacionados a um cliente específico e que foram carregados no ObjectContext serão excluídos se o cliente for excluído.Additionally, the OnDelete element indicates that all Orders that are related to a particular Customer and have been loaded into the ObjectContext will be deleted if the Customer is deleted.

 <Association Name="CustomerOrders">
   <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" >
         <OnDelete Action="Cascade" />
   </End>
   <End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
 </Association>

 

O exemplo a seguir mostra um elemento Association que define a associação CustomerOrders quando chaves estrangeiras foram expostas nos tipos de entidade Customer e Order .The following example shows an Association element that defines the CustomerOrders association when foreign keys have been exposed on the Customer and Order entity types. Com as chaves estrangeiras expostas, a relação entre as entidades é gerenciada com um elemento ReferentialConstraint .With foreign keys exposed, the relationship between the entities is managed with a ReferentialConstraint element. Um elemento AssociationSetMapping correspondente não é necessário para mapear essa associação para a fonte de dados.A corresponding AssociationSetMapping element is not necessary to map this association to the data source.

 <Association Name="CustomerOrders">
   <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" >
         <OnDelete Action="Cascade" />
   </End>
   <End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
   <ReferentialConstraint>
        <Principal Role="Customer">
            <PropertyRef Name="Id" />
        </Principal>
        <Dependent Role="Order">
             <PropertyRef Name="CustomerId" />
         </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

Elemento AssociationSet (CSDL)AssociationSet Element (CSDL)

O elemento AssociationSet na CSDL (linguagem de definição de esquema conceitual) é um contêiner lógico para instâncias de associação do mesmo tipo.The AssociationSet element in conceptual schema definition language (CSDL) is a logical container for association instances of the same type. Um conjunto de associação fornece uma definição para Agrupamento de instâncias de associação para que elas possam ser mapeadas para uma fonte de dados.An association set provides a definition for grouping association instances so that they can be mapped to a data source.  

O elemento AssociationSet pode ter os seguintes elementos filho (na ordem listada):The AssociationSet element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento permitido)Documentation (zero or one elements allowed)
  • End (exatamente dois elementos necessários)End (exactly two elements required)
  • Elementos de anotação (zero ou mais elementos permitidos)Annotation elements (zero or more elements allowed)

O atributo Association especifica o tipo de associação que um conjunto de associação contém.The Association attribute specifies the type of association that an association set contains. Os conjuntos de entidades que compõem as extremidades de um conjunto de associação são especificados com exatamente dois elementos end filho.The entity sets that make up the ends of an association set are specified with exactly two child End elements.

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento AssociationSet .The table below describes the attributes that can be applied to the AssociationSet element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome do conjunto de entidades.The name of the entity set. O valor do atributo Name não pode ser o mesmo que o valor do atributo Association .The value of the Name attribute cannot be the same as the value of the Association attribute.
AssociaçãoAssociation SimYes O nome totalmente qualificado da associação que o conjunto de associação contém instâncias do.The fully-qualified name of the association that the association set contains instances of. A associação deve estar no mesmo namespace que o conjunto de associação.The association must be in the same namespace as the association set.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento AssociationSet .Any number of annotation attributes (custom XML attributes) may be applied to the AssociationSet element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento EntityContainer com dois elementos AssociationSet :The following example shows an EntityContainer element with two AssociationSet elements:

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

Elemento CollectionType (CSDL)CollectionType Element (CSDL)

O elemento CollectionType na linguagem de definição de esquema conceitual (CSDL) especifica que um parâmetro de função ou tipo de retorno de função é uma coleção.The CollectionType element in conceptual schema definition language (CSDL) specifies that a function parameter or function return type is a collection. O elemento CollectionType pode ser filho do elemento Parameter ou do elemento ReturnType (Function).The CollectionType element can be a child of the Parameter element or the ReturnType (Function) element. O tipo de coleção pode ser especificado usando o atributo Type ou um dos seguintes elementos filho:The type of collection can be specified by using either the Type attribute or one of the following child elements:

  • CollectionTypeCollectionType
  • ReferenceTypeReferenceType
  • RowTypeRowType
  • TypeRefTypeRef

Observação

Um modelo não será validado se o tipo de uma coleção for especificado com o atributo Type e um elemento filho.A model will not validate if the type of a collection is specified with both the Type attribute and a child element.

 

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento CollectionType .The following table describes the attributes that can be applied to the CollectionType element. Observe que os atributos DefaultValue, MaxLength, cadeia, Precision, Scale, Unicodee Collation são aplicáveis somente às coleções de EDMSimpleTypes.Note that the DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode, and Collation attributes are only applicable to collections of EDMSimpleTypes.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
TipoType NãoNo O tipo do conjunto.The type of the collection.
Permite valor nuloNullable NãoNo True (o valor padrão) ou False, dependendo se a propriedade pode ter um valor nulo.True (the default value) or False depending on whether the property can have a null value.
[!NOTE]
> no CSDL v1, uma propriedade de tipo complexo deve ter Nullable="False" .> In the CSDL v1, a complex type property must have Nullable="False".
DefaultValueDefaultValue NãoNo O valor padrão da propriedade.The default value of the property.
MaxLengthMaxLength NãoNo O comprimento máximo do valor da propriedade.The maximum length of the property value.
CadeiaFixedLength NãoNo True ou false dependendo se o valor da propriedade será armazenado como uma cadeia de caracteres de comprimento fixo.True or False depending on whether the property value will be stored as a fixed length string.
PrecisãoPrecision NãoNo A precisão do valor da propriedade.The precision of the property value.
DimensionarScale NãoNo A escala do valor da propriedade.The scale of the property value.
SRIDSRID NãoNo Identificador de referência de sistema espacial.Spatial System Reference Identifier. Válido somente para propriedades de tipos espaciais.Valid only for properties of spatial types.Para obter mais informações, consulte SRID e SRID (SQL Server)   For more information, see SRID and SRID (SQL Server)
UnicodeUnicode NãoNo True ou false dependendo se o valor da propriedade será armazenado como uma cadeia de caracteres Unicode.True or False depending on whether the property value will be stored as a Unicode string.
OrdenaçãoCollation NãoNo Uma cadeia de caracteres que especifica a sequência de agrupamento a ser usada na fonte de dados.A string that specifies the collating sequence to be used in the data source.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento CollectionType .Any number of annotation attributes (custom XML attributes) may be applied to the CollectionType element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra uma função definida pelo modelo que usa um elemento CollectionType para especificar que a função retorna uma coleção de tipos de entidade Person (conforme especificado com o atributo ElementType ).The following example shows a model-defined function that that uses a CollectionType element to specify that the function returns a collection of Person entity types (as specified with the ElementType attribute).

 <Function Name="LastNamesAfter">
        <Parameter Name="someString" Type="Edm.String"/>
        <ReturnType>
             <CollectionType  ElementType="SchoolModel.Person"/>
        </ReturnType>
        <DefiningExpression>
             SELECT VALUE p
             FROM SchoolEntities.People AS p
             WHERE p.LastName >= someString
        </DefiningExpression>
 </Function>

 

O exemplo a seguir mostra uma função definida pelo modelo que usa um elemento CollectionType para especificar que a função retorna uma coleção de linhas (conforme especificado no elemento RowType ).The following example shows a model-defined function that uses a CollectionType element to specify that the function returns a collection of rows (as specified in the RowType element).

 <Function Name="LastNamesAfter">
   <Parameter Name="someString" Type="Edm.String" />
   <ReturnType>
    <CollectionType>
      <RowType>
        <Property Name="FirstName" Type="Edm.String" Nullable="false" />
        <Property Name="LastName" Type="Edm.String" Nullable="false" />
      </RowType>
    </CollectionType>
   </ReturnType>
   <DefiningExpression>
             SELECT VALUE ROW(p.FirstName, p.LastName)
             FROM SchoolEntities.People AS p
             WHERE p.LastName &gt;= somestring
   </DefiningExpression>
 </Function>

 

O exemplo a seguir mostra uma função definida pelo modelo que usa o elemento CollectionType para especificar que a função aceita como um parâmetro uma coleção de tipos de entidade Department .The following example shows a model-defined function that uses the CollectionType element to specify that the function accepts as a parameter a collection of Department entity types.

 <Function Name="GetAvgBudget">
      <Parameter Name="Departments">
          <CollectionType>
             <TypeRef Type="SchoolModel.Department"/>
          </CollectionType>
           </Parameter>
       <ReturnType Type="Collection(Edm.Decimal)"/>
       <DefiningExpression>
             SELECT VALUE AVG(d.Budget) FROM Departments AS d
       </DefiningExpression>
 </Function>

 

 

Elemento complexType (CSDL)ComplexType Element (CSDL)

Um elemento complexType define uma estrutura de dados composta por propriedades EdmSimpleType ou outros tipos complexos.A ComplexType element defines a data structure composed of EdmSimpleType properties or other complex types.Um tipo complexo pode ser uma propriedade de um tipo de entidade ou outro tipo complexo.  A complex type can be a property of an entity type or another complex type. Um tipo complexo é semelhante a um tipo de entidade no que um tipo complexo define dados.A complex type is similar to an entity type in that a complex type defines data. No entanto, há algumas diferenças entre tipos complexos e tipos de entidade:However, there are some key differences between complex types and entity types:

  • Tipos complexos não têm identidades (ou chaves) e, portanto, não podem existir de forma independente.Complex types do not have identities (or keys) and therefore cannot exist independently. Tipos complexos só podem existir como propriedades de tipos de entidade ou outros tipos complexos.Complex types can only exist as properties of entity types or other complex types.
  • Os tipos complexos não podem participar em associações.Complex types cannot participate in associations. Nenhuma extremidade de uma associação pode ser um tipo complexo e, portanto, as propriedades de navegação não podem ser definidas para tipos complexos.Neither end of an association can be a complex type, and therefore navigation properties cannot be defined for complex types.
  • Uma propriedade de tipo complexo não pode ter um valor nulo, embora as propriedades escalares de um tipo complexo possam ser definidas como NULL.A complex type property cannot have a null value, though the scalar properties of a complex type may each be set to null.

Um elemento complexType pode ter os seguintes elementos filho (na ordem listada):A ComplexType element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Propriedade (zero ou mais elementos)Property (zero or more elements)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento complexType .The table below describes the attributes that can be applied to the ComplexType element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome do tipo complexo.The name of the complex type. O nome de um tipo complexo não pode ser igual ao nome de outro tipo complexo, tipo de entidade ou associação que está dentro do escopo do modelo.The name of a complex type cannot be the same as the name of another complex type, entity type, or association that is within the scope of the model.
BaseTypeBaseType NãoNo O nome de outro tipo complexo que é o tipo base do tipo complexo que está sendo definido.The name of another complex type that is the base type of the complex type that is being defined.
[!NOTE]
> este atributo não é aplicável em CSDL v1.> This attribute is not applicable in CSDL v1. A herança para tipos complexos não tem suporte nessa versão.Inheritance for complex types is not supported in that version.
ResumoAbstract NãoNo True ou false (o valor padrão) dependendo se o tipo complexo é um tipo abstrato.True or False (the default value) depending on whether the complex type is an abstract type.
[!NOTE]
> este atributo não é aplicável em CSDL v1.> This attribute is not applicable in CSDL v1. Tipos complexos nessa versão não podem ser tipos abstratos.Complex types in that version cannot be abstract types.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento complexType .Any number of annotation attributes (custom XML attributes) may be applied to the ComplexType element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um tipo complexo, endereço, com as propriedades EdmSimpleType StreetAddress, City, EstadoOuProvíncia, Countrye PostalCode.The following example shows a complex type, Address, with the EdmSimpleType properties StreetAddress, City, StateOrProvince, Country, and PostalCode.

 <ComplexType Name="Address" >
   <Property Type="String" Name="StreetAddress" Nullable="false" />
   <Property Type="String" Name="City" Nullable="false" />
   <Property Type="String" Name="StateOrProvince" Nullable="false" />
   <Property Type="String" Name="Country" Nullable="false" />
   <Property Type="String" Name="PostalCode" Nullable="false" />
 </ComplexType>

 

Para definir o endereço de tipo complexo (acima) como uma propriedade de um tipo de entidade, você deve declarar o tipo de propriedade na definição de tipo de entidade.To define the complex type Address (above) as a property of an entity type, you must declare the property type in the entity type definition. O exemplo a seguir mostra a propriedade Address como um tipo complexo em um tipo de entidade (Editor):The following example shows the Address property as a complex type on an entity type (Publisher):

 <EntityType Name="Publisher">
       <Key>
         <PropertyRef Name="Id" />
       </Key>
       <Property Type="Int32" Name="Id" Nullable="false" />
       <Property Type="String" Name="Name" Nullable="false" />
       <Property Type="BooksModel.Address" Name="Address" Nullable="false" />
       <NavigationProperty Name="Books" Relationship="BooksModel.PublishedBy"
                           FromRole="Publisher" ToRole="Book" />
     </EntityType>

 

 

Elemento de definição (CSDL)DefiningExpression Element (CSDL)

O elemento de definição da linguagem de definição de esquema conceitual (CSDL) contém uma Entity SQL expressão que define uma função no modelo conceitual.The DefiningExpression element in conceptual schema definition language (CSDL) contains an Entity SQL expression that defines a function in the conceptual model.  

Observação

Para fins de validação, um elemento de definição pode conter conteúdo arbitrário.For validation purposes, a DefiningExpression element can contain arbitrary content. No entanto, Entity Framework gerará uma exceção em tempo de execução se um elemento de definição não contiver um Entity SQL válido.However, Entity Framework will throw an exception at runtime if a DefiningExpression element does not contain valid Entity SQL.

 

Atributos aplicáveisApplicable Attributes

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento de definição .Any number of annotation attributes (custom XML attributes) may be applied to the DefiningExpression element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

ExemploExample

O exemplo a seguir usa um elemento de definição para definir uma função que retorna o número de anos desde que um livro foi publicado.The following example uses a DefiningExpression element to define a function that returns the number of years since a book was published. O conteúdo do elemento de definição é escrito em Entity SQL.The content of the DefiningExpression element is written in Entity SQL.

 <Function Name="GetYearsInPrint" ReturnType="Edm.Int32" >
       <Parameter Name="book" Type="BooksModel.Book" />
       <DefiningExpression>
         Year(CurrentDateTime()) - Year(cast(book.PublishedDate as DateTime))
       </DefiningExpression>
     </Function>

 

 

Elemento dependent (CSDL)Dependent Element (CSDL)

O elemento dependente na linguagem de definição de esquema conceitual (CSDL) é um elemento filho para o elemento ReferentialConstraint e define a extremidade dependente de uma restrição referencial.The Dependent element in conceptual schema definition language (CSDL) is a child element to the ReferentialConstraint element and defines the dependent end of a referential constraint. Um elemento ReferentialConstraint define a funcionalidade que é semelhante a uma restrição de integridade referencial em um banco de dados relacional.A ReferentialConstraint element defines functionality that is similar to a referential integrity constraint in a relational database. Da mesma forma que uma coluna (ou colunas) de uma tabela de base de dados podem fazer referência a chave primária de outra tabela, propriedade (ou propriedades) de tipo de entidade podem fazer referência chave de entidade de outro tipo de objeto.In the same way that a column (or columns) from a database table can reference the primary key of another table, a property (or properties) of an entity type can reference the entity key of another entity type. O tipo de entidade referenciado é chamado de extremidade principal da restrição.The entity type that is referenced is called the principal end of the constraint. O tipo de entidade que faz referência à extremidade principal é chamado de extremidade dependente da restrição.The entity type that references the principal end is called the dependent end of the constraint. Os elementos PropertyRef são usados para especificar quais chaves fazem referência à extremidade principal.PropertyRef elements are used to specify which keys reference the principal end.

O elemento dependente pode ter os seguintes elementos filho (na ordem listada):The Dependent element can have the following child elements (in the order listed):

  • PropertyRef (um ou mais elementos)PropertyRef (one or more elements)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento dependente .The table below describes the attributes that can be applied to the Dependent element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
FunçãoRole SimYes O nome do tipo de entidade na extremidade dependente da associação.The name of the entity type on the dependent end of the association.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento dependente .Any number of annotation attributes (custom XML attributes) may be applied to the Dependent element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento ReferentialConstraint que está sendo usado como parte da definição da Associação PublishedBy .The following example shows a ReferentialConstraint element being used as part of the definition of the PublishedBy association. A propriedade PublisherID do tipo de entidade Book compõe a extremidade dependente da restrição referencial.The PublisherId property of the Book entity type makes up the dependent end of the referential constraint.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

Elemento Documentation (CSDL)Documentation Element (CSDL)

O elemento Documentation na CSDL (linguagem de definição de esquema conceitual) pode ser usado para fornecer informações sobre um objeto que é definido em um elemento pai.The Documentation element in conceptual schema definition language (CSDL) can be used to provide information about an object that is defined in a parent element. Em um arquivo. edmx, quando o elemento de documentação é um filho de um elemento que aparece como um objeto na superfície de design do designer do EF (como uma entidade, associação ou Propriedade), o conteúdo do elemento de documentação aparecerá na janela Propriedades do Visual Studio para o objeto.In an .edmx file, when the Documentation element is a child of an element that appears as an object on the design surface of the EF Designer  (such as an entity, association, or property), the contents of the Documentation element will appear in the Visual Studio Properties window for the object.

O elemento de documentação pode ter os seguintes elementos filho (na ordem listada):The Documentation element can have the following child elements (in the order listed):

  • Resumo: uma breve descrição do elemento pai.Summary: A brief description of the parent element. (zero ou um elemento)(zero or one element)
  • LongDescription: uma descrição extensiva do elemento pai.LongDescription: An extensive description of the parent element. (zero ou um elemento)(zero or one element)
  • Elementos de anotação.Annotation elements. (zero ou mais elementos)(zero or more elements)

Atributos aplicáveisApplicable Attributes

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento de documentação .Any number of annotation attributes (custom XML attributes) may be applied to the Documentation element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

ExemploExample

O exemplo a seguir mostra o elemento de documentação como um elemento filho de um elemento EntityType.The following example shows the Documentation element as a child element of an EntityType element. Se o trecho de código a seguir estivesse no conteúdo CSDL de um arquivo. edmx, o conteúdo dos elementos Summary e longDescription apareceria na janela Propriedades do Visual Studio quando você clicar no Customer tipo de entidade.If the snippet below were in the CSDL content of an .edmx file, the contents of the Summary and LongDescription elements would appear in the Visual Studio Properties window when you click on the Customer entity type.

 <EntityType Name="Customer">
    <Documentation>
      <Summary>Summary here.</Summary>
      <LongDescription>Long description here.</LongDescription>
    </Documentation>
    <Key>
      <PropertyRef Name="CustomerId" />
    </Key>
    <Property Type="Int32" Name="CustomerId" Nullable="false" />
    <Property Type="String" Name="Name" Nullable="false" />
 </EntityType>

 

 

Elemento end (CSDL)End Element (CSDL)

O elemento end na linguagem de definição de esquema conceitual (CSDL) pode ser filho do elemento Association ou do elemento AssociationSet.The End element in conceptual schema definition language (CSDL) can be a child of the Association element or the AssociationSet element. Em cada caso, a função do elemento final é diferente e os atributos aplicáveis são diferentes.In each case, the role of the End element is different and the applicable attributes are different.

Elemento end como um filho do elemento AssociationEnd Element as a Child of the Association Element

Um elemento final (como um filho do elemento Association ) identifica o tipo de entidade em uma extremidade de uma associação e o número de instâncias de tipo de entidade que podem existir no final de uma associação.An End element (as a child of the Association element) identifies the entity type on one end of an association and the number of entity type instances that can exist at that end of an association. Termina de associação são definidas como parte de uma associação; uma associação deve ter exatamente duas termina de associação.Association ends are defined as part of an association; an association must have exactly two association ends. As instâncias do tipo de entidade no final de uma associação podem ser acessadas através de propriedades de navegação ou de chaves estrangeiras se são expostos em um tipo de objeto.Entity type instances at one end of an association can be accessed through navigation properties or foreign keys if they are exposed on an entity type.  

Um elemento final pode ter os seguintes elementos filho (na ordem listada):An End element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • OnDelete (zero ou um elemento)OnDelete (zero or one element)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento final quando ele é o filho de um elemento Association .The following table describes the attributes that can be applied to the End element when it is the child of an Association element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
TipoType SimYes O nome do tipo de entidade em uma extremidade da associação.The name of the entity type at one end of the association.
FunçãoRole NãoNo Um nome para o final da associação.A name for the association end. Se nenhum nome for fornecido, o nome do tipo de entidade na extremidade da Associação será usado.If no name is provided, the name of the entity type on the association end will be used.
MultiplicidadeMultiplicity SimYes 1, 0.. 1, ou * dependendo do número de instâncias de tipo de entidade que podem estar no final da associação.1, 0..1, or * depending on the number of entity type instances that can be at the end of the association.
1 indica que exatamente uma instância de tipo de entidade existe na extremidade da associação.1 indicates that exactly one entity type instance exists at the association end.
0.. 1 indica que nenhuma instância de tipo de entidade existe na extremidade da associação.0..1 indicates that zero or one entity type instances exist at the association end.
* indica que zero, uma ou mais instâncias de tipo de entidade existem na extremidade da associação.* indicates that zero, one, or more entity type instances exist at the association end.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento final .Any number of annotation attributes (custom XML attributes) may be applied to the End element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento Association que define a associação CustomerOrders .The following example shows an Association element that defines the CustomerOrders association. Os valores de multiplicidade para cada extremidade da Associação indicam que muitos pedidos podem ser associados a um cliente, mas somente um cliente pode ser associado a um pedido.The Multiplicity values for each End of the association indicate that many Orders can be associated with a Customer, but only one Customer can be associated with an Order. Além disso, o elemento OnDelete indica que todos os pedidos relacionados a um cliente específico e que foram carregados no ObjectContext serão excluídos se o cliente for excluído.Additionally, the OnDelete element indicates that all Orders that are related to a particular Customer and that have been loaded into the ObjectContext will be deleted if the Customer is deleted.

 <Association Name="CustomerOrders">
   <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" />
   <End Type="ExampleModel.Order" Role="Order" Multiplicity="*">
         <OnDelete Action="Cascade" />
   </End>
 </Association>

 

Elemento end como um filho do elemento AssociationSetEnd Element as a Child of the AssociationSet Element

O elemento end especifica uma extremidade de um conjunto de associação.The End element specifies one end of an association set. O elemento AssociationSet deve conter dois elementos end .The AssociationSet element must contain two End elements. As informações contidas em um elemento final são usadas no mapeamento de uma associação definida para uma fonte de dados.The information contained in an End element is used in mapping an association set to a data source.

Um elemento final pode ter os seguintes elementos filho (na ordem listada):An End element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Observação

Os elementos de anotação devem aparecer após todos os outros elementos filho.Annotation elements must appear after all other child elements. Os elementos de anotação são permitidos somente no CSDL V2 e posterior.Annotation elements are only allowed in CSDL v2 and later.

 

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento final quando ele é o filho de um elemento AssociationSet .The following table describes the attributes that can be applied to the End element when it is the child of an AssociationSet element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
EntitySetEntitySet SimYes O nome do elemento EntitySet que define uma extremidade do elemento de AssociationSet pai.The name of the EntitySet element that defines one end of the parent AssociationSet element. O elemento EntitySet deve ser definido no mesmo contêiner de entidade que o elemento de AssociationSet pai.The EntitySet element must be defined in the same entity container as the parent AssociationSet element.
FunçãoRole NãoNo O nome da extremidade do conjunto de associação.The name of the association set end. Se o atributo role não for usado, o nome do conjunto de associação end será o nome do conjunto de entidades.If the Role attribute is not used, the name of the association set end will be the name of the entity set.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento final .Any number of annotation attributes (custom XML attributes) may be applied to the End element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento EntityContainer com dois elementos AssociationSet , cada um com dois elementos end :The following example shows an EntityContainer element with two AssociationSet elements, each with two End elements:

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

Elemento EntityContainer (CSDL)EntityContainer Element (CSDL)

O elemento EntityContainer na linguagem de definição de esquema conceitual (CSDL) é um contêiner lógico para conjuntos de entidades, conjuntos de associação e importações de função.The EntityContainer element in conceptual schema definition language (CSDL) is a logical container for entity sets, association sets, and function imports. Um contêiner de entidade de modelo conceitual é mapeado para um contêiner de entidade de modelo de armazenamento por meio do elemento EntityContainerMapping.A conceptual model entity container maps to a storage model entity container through the EntityContainerMapping element. Um contêiner de entidade do modelo de armazenamento descreve a estrutura do banco de dados: os conjuntos de entidades descrevem tabelas, os conjuntos de associação descrevem as restrições de chave estrangeira e as importações de função descrevem procedimentos armazenados em um banco de dados.A storage model entity container describes the structure of the database: entity sets describe tables, association sets describe foreign key constraints, and function imports describe stored procedures in a database.

Um elemento EntityContainer pode ter zero ou um elementos de documentação.An EntityContainer element can have zero or one Documentation elements. Se um elemento de documentação estiver presente, ele deverá preceder todos os elementos EntitySet, AssociationSete FunctionImport .If a Documentation element is present, it must precede all EntitySet, AssociationSet, and FunctionImport elements.

Um elemento EntityContainer pode ter zero ou mais dos seguintes elementos filho (na ordem listada):An EntityContainer element can have zero or more of the following child elements (in the order listed):

  • EntitySetEntitySet
  • AssociationSetAssociationSet
  • FunctionImportFunctionImport
  • Elementos AnnotationAnnotation elements

Você pode estender um elemento EntityContainer para incluir o conteúdo de outro EntityContainer que está dentro do mesmo namespace.You can extend an EntityContainer element to include the contents of another EntityContainer that is within the same namespace. Para incluir o conteúdo de outro EntityContainer, no elemento EntityContainer de referência, defina o valor do atributo extends como o nome do elemento EntityContainer que você deseja incluir.To include the contents of another EntityContainer, in the referencing EntityContainer element, set the value of the Extends attribute to the name of the EntityContainer element that you want to include. Todos os elementos filho do elemento EntityContainer incluído serão tratados como elementos filho do elemento EntityContainer de referência.All child elements of the included EntityContainer element will be treated as child elements of the referencing EntityContainer element.

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento using .The table below describes the attributes that can be applied to the Using element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome do contêiner de entidade.The name of the entity container.
EstendeExtends NãoNo O nome de outro contêiner de entidade no mesmo namespace.The name of another entity container within the same namespace.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento EntityContainer .Any number of annotation attributes (custom XML attributes) may be applied to the EntityContainer element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento EntityContainer que define três conjuntos de entidades e dois conjuntos de associação.The following example shows an EntityContainer element that defines three entity sets and two association sets.

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

Elemento EntitySet (CSDL)EntitySet Element (CSDL)

O elemento EntitySet na linguagem de definição de esquema conceitual é um contêiner lógico para instâncias de um tipo de entidade e instâncias de qualquer tipo que é derivado desse tipo de entidade.The EntitySet element in conceptual schema definition language is a logical container for instances of an entity type and instances of any type that is derived from that entity type. A relação entre um tipo de entidade e um conjunto de entidades é análoga à relação entre uma linha e uma tabela em um banco de dados relacional.The relationship between an entity type and an entity set is analogous to the relationship between a row and a table in a relational database. Como uma linha, um tipo de entidade define um conjunto de dados relacionados e, como uma tabela, um conjunto de entidades contém instâncias dessa definição.Like a row, an entity type defines a set of related data, and, like a table, an entity set contains instances of that definition. Um conjunto de entidades fornece um constructo para agrupar instâncias de tipo de entidade para que elas possam ser mapeadas para estruturas de dados relacionadas em uma fonte de dados.An entity set provides a construct for grouping entity type instances so that they can be mapped to related data structures in a data source.  

Mais de um conjunto de entidades para um determinado tipo de entidade pode ser definido.More than one entity set for a particular entity type may be defined.

Observação

O designer do EF não oferece suporte a modelos conceituais que contêm vários conjuntos de entidades por tipo.The EF Designer does not support conceptual models that contain multiple entity sets per type.

 

O elemento EntitySet pode ter os seguintes elementos filho (na ordem listada):The EntitySet element can have the following child elements (in the order listed):

  • Elemento Documentation (zero ou um elementos permitidos)Documentation Element (zero or one elements allowed)
  • Elementos de anotação (zero ou mais elementos permitidos)Annotation elements (zero or more elements allowed)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento EntitySet .The table below describes the attributes that can be applied to the EntitySet element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome do conjunto de entidades.The name of the entity set.
EntityTypeEntityType SimYes O nome totalmente qualificado do tipo de entidade para o qual o conjunto de entidades contém instâncias.The fully-qualified name of the entity type for which the entity set contains instances.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento EntitySet .Any number of annotation attributes (custom XML attributes) may be applied to the EntitySet element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento EntityContainer com três elementos EntitySet :The following example shows an EntityContainer element with three EntitySet elements:

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

É possível definir vários conjuntos de entidades por tipo (MEST).It is possible to define multiple entity sets per type (MEST). O exemplo a seguir define um contêiner de entidade com dois conjuntos de entidades para o tipo de entidade de livro :The following example defines an entity container with two entity sets for the Book entity type:

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="FictionBooks" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="BookAuthor" Association="BooksModel.BookAuthor">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

Elemento EntityType (CSDL)EntityType Element (CSDL)

O elemento EntityType representa a estrutura de um conceito de nível superior, como um cliente ou uma ordem, em um modelo conceitual.The EntityType element represents the structure of a top-level concept, such as a customer or order, in a conceptual model. Um tipo de entidade é um modelo para instâncias de tipos de entidade em um aplicativo.An entity type is a template for instances of entity types in an application. Cada modelo contém as informações a seguir:Each template contains the following information:

  • Um nome exclusivo.A unique name. (Obrigatório.)(Required.)
  • Uma chave de entidade que é definida por uma ou mais propriedades.An entity key that is defined by one or more properties. (Obrigatório.)(Required.)
  • Propriedades para conter dados.Properties for containing data. (Opcional).(Optional.)
  • {1>Propriedades de navegação<1} que permite a navegação de um {2>o final<2} de {3>associação<3} outra extremidade.Navigation properties that allow for navigation from one end of an association to the other end. (Opcional).(Optional.)

Em um aplicativo, uma instância de um tipo de entidade representa um objeto específico (como um cliente ou uma ordem específica.)In an application, an instance of an entity type represents a specific object (such as a specific customer or order). Cada instância de um tipo de entidade deve ter chave de entidade exclusivo dentro de conjunto de entidades.Each instance of an entity type must have a unique entity key within an entity set.

Duas instâncias do tipo de entidade são consideradas iguais somente se são do mesmo tipo e os valores das chaves de entidade são os mesmos.Two entity type instances are considered equal only if they are of the same type and the values of their entity keys are the same.

Um elemento EntityType pode ter os seguintes elementos filho (na ordem listada):An EntityType element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Chave (zero ou um elemento)Key (zero or one element)
  • Propriedade (zero ou mais elementos)Property (zero or more elements)
  • NavigationProperty (zero ou mais elementos)NavigationProperty (zero or more elements)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento EntityType .The table below describes the attributes that can be applied to the EntityType element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome do tipo de entidade.The name of the entity type.
BaseTypeBaseType NãoNo O nome de outro tipo de entidade que é o tipo básico do tipo de entidade que está sendo definido.The name of another entity type that is the base type of the entity type that is being defined.
ResumeAbstract NãoNo True ou false, dependendo se o tipo de entidade é um tipo abstrato.True or False, depending on whether the entity type is an abstract type.
OpenTypeOpenType NãoNo True ou false dependendo se o tipo de entidade é um tipo de entidade aberto.True or False depending on whether the entity type is an open entity type.
[!NOTE]
> o atributo OpenType só é aplicável a tipos de entidade que são definidos em modelos conceituais que são usados com os serviços de dados do ADO.net.> The OpenType attribute is only applicable to entity types that are defined in conceptual models that are used with ADO.NET Data Services.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento EntityType .Any number of annotation attributes (custom XML attributes) may be applied to the EntityType element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento EntityType com três elementos Property e dois elementos NavigationProperty :The following example shows an EntityType element with three Property elements and two NavigationProperty elements:

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

 

Elemento EnumType (CSDL)EnumType Element (CSDL)

O elemento enumType representa um tipo enumerado.The EnumType element represents an enumerated type.

Um elemento enumType pode ter os seguintes elementos filho (na ordem listada):An EnumType element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Membro (zero ou mais elementos)Member (zero or more elements)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento enumType .The table below describes the attributes that can be applied to the EnumType element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome do tipo de entidade.The name of the entity type.
IsFlagsIsFlags NãoNo True ou false, dependendo se o tipo de enumeração pode ser usado como um conjunto de sinalizadores.True or False, depending on whether the enum type can be used as a set of flags. O valor padrão é false..The default value is False..
UnderlyingTypeUnderlyingType NãoNo EDM. byte, EDM. Int16, EDM. Int32, EDM. Int64 ou EDM. SByte que definem o intervalo de valores do tipo.Edm.Byte, Edm.Int16, Edm.Int32, Edm.Int64 or Edm.SByte defining the range of values of the type. O tipo subjacente padrão de elementos de enumeração é EDM. Int32..  The default underlying type of enumeration elements is Edm.Int32..

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento enumType .Any number of annotation attributes (custom XML attributes) may be applied to the EnumType element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento enumType com três elementos de membro :The following example shows an EnumType element with three Member elements:

 <EnumType Name="Color" IsFlags=”false” UnderlyingTyp=”Edm.Byte”>
   <Member Name="Red" />
   <Member Name="Green" />
   <Member Name="Blue" />
 </EntityType>

 

 

Elemento Function (CSDL)Function Element (CSDL)

O elemento Function na linguagem de definição de esquema conceitual (CSDL) é usado para definir ou declarar funções no modelo conceitual.The Function element in conceptual schema definition language (CSDL) is used to define or declare functions in the conceptual model. Uma função é definida usando um elemento de definição.A function is defined by using a DefiningExpression element.  

Um elemento Function pode ter os seguintes elementos filho (na ordem listada):A Function element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Parâmetro (zero ou mais elementos)Parameter (zero or more elements)
  • Definindo a definição (zero ou um elemento)DefiningExpression (zero or one element)
  • ReturnType (função) (zero ou um elemento)ReturnType (Function) (zero or one element)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Um tipo de retorno para uma função deve ser especificado com o elemento ReturnType (função) ou o atributo ReturnType (veja abaixo), mas não ambos.A return type for a function must be specified with either the ReturnType (Function) element or the ReturnType attribute (see below), but not both. Os tipos de retorno possíveis são qualquer EdmSimpleType, tipo de entidade, tipo complexo, tipo de linha ou tipo de referência (ou uma coleção de um desses tipos).The possible return types are any EdmSimpleType, entity type, complex type, row type, or ref type (or a collection of one of these types).

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento Function .The table below describes the attributes that can be applied to the Function element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome da função.The name of the function.
ReturnTypeReturnType NãoNo O tipo retornado pela função.The type returned by the function.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento Function .Any number of annotation attributes (custom XML attributes) may be applied to the Function element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir usa um elemento Function para definir uma função que retorna o número de anos desde que um instrutor foi contratado.The following example uses a Function element to define a function that returns the number of years since an instructor was hired.

 <Function Name="YearsSince" ReturnType="Edm.Int32">
   <Parameter Name="date" Type="Edm.DateTime" />
   <DefiningExpression>
     Year(CurrentDateTime()) - Year(date)
   </DefiningExpression>
 </Function>

 

 

Elemento FunctionImport (CSDL)FunctionImport Element (CSDL)

O elemento FunctionImport na linguagem de definição de esquema conceitual (CSDL) representa uma função que é definida na fonte de dados, mas disponível para objetos por meio do modelo conceitual.The FunctionImport element in conceptual schema definition language (CSDL) represents a function that is defined in the data source but available to objects through the conceptual model. Por exemplo, um elemento Function no modelo de armazenamento pode ser usado para representar um procedimento armazenado em um banco de dados.For example, a Function element in the storage model can be used to represent a stored procedure in a database. Um elemento FunctionImport no modelo conceitual representa a função correspondente em um aplicativo Entity Framework e é mapeado para a função de modelo de armazenamento usando o elemento FunctionImportMapping.A FunctionImport element in the conceptual model represents the corresponding function in an Entity Framework application and is mapped to the storage model function by using the FunctionImportMapping element. Quando a função é chamada no aplicativo, o procedimento armazenado correspondente é executado no banco de dados.When the function is called in the application, the corresponding stored procedure is executed in the database.

O elemento FunctionImport pode ter os seguintes elementos filho (na ordem listada):The FunctionImport element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento permitido)Documentation (zero or one elements allowed)
  • Parâmetro (zero ou mais elementos permitidos)Parameter (zero or more elements allowed)
  • Elementos de anotação (zero ou mais elementos permitidos)Annotation elements (zero or more elements allowed)
  • ReturnType (FunctionImport) (zero ou mais elementos permitidos)ReturnType (FunctionImport) (zero or more elements allowed)

Um elemento de parâmetro deve ser definido para cada parâmetro que a função aceita.One Parameter element should be defined for each parameter that the function accepts.

Um tipo de retorno para uma função deve ser especificado com o elemento ReturnType (FunctionImport) ou o atributo ReturnType (veja abaixo), mas não ambos.A return type for a function must be specified with either the ReturnType (FunctionImport) element or the ReturnType attribute (see below), but not both. O valor do tipo de retorno deve ser uma coleção de EdmSimpleType, EntityType ou complexType.The return type value must be a  collection of EdmSimpleType, EntityType, or ComplexType.

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento FunctionImport .The table below describes the attributes that can be applied to the FunctionImport element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome da função importada.The name of the imported function.
ReturnTypeReturnType NãoNo O tipo que a função retorna.The type that the function returns. Não use esse atributo se a função não retorna um valor.Do not use this attribute if the function does not return a value. Caso contrário, o valor deve ser uma coleção de complexType, EntityType ou EDMSimpleType.Otherwise, the value must be a collection of ComplexType, EntityType, or EDMSimpleType.
EntitySetEntitySet NãoNo Se a função retornar uma coleção de tipos de entidade, o valor do EntitySet deverá ser o conjunto de entidades ao qual a coleção pertence.If the function returns a collection of entity types, the value of the EntitySet must be the entity set to which the collection belongs. Caso contrário, o atributo EntitySet não deve ser usado.Otherwise, the EntitySet attribute must not be used.
IsComposableIsComposable NãoNo Se o valor for definido como true, a função será combinável (função com valor de tabela) e poderá ser usada em uma consulta LINQ.If the value is set to true, the function is composable (Table-valued Function) and can be used in a LINQ query.O padrão é false.  The default is false.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento FunctionImport .Any number of annotation attributes (custom XML attributes) may be applied to the FunctionImport element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento FunctionImport que aceita um parâmetro e retorna uma coleção de tipos de entidade:The following example shows a FunctionImport element that accepts one parameter and returns a collection of entity types:

 <FunctionImport Name="GetStudentGrades"
                 EntitySet="StudentGrade"
                 ReturnType="Collection(SchoolModel.StudentGrade)">
        <Parameter Name="StudentID" Mode="In" Type="Int32" />
 </FunctionImport>

 

 

Elemento Key (CSDL)Key Element (CSDL)

O elemento Key é um elemento filho do elemento EntityType e define uma chave de entidade (uma propriedade ou um conjunto de propriedades de um tipo de entidade que determinam a identidade).The Key element is a child element of the EntityType element and defines an entity key (a property or a set of properties of an entity type that determine identity). As propriedades que compõem uma chave de entidade são escolhidas em tempo de design.The properties that make up an entity key are chosen at design time. Os valores das propriedades de chave de entidade devem exclusivamente identificar uma instância do tipo de entidade dentro de conjunto de entidades em tempo de execução.The values of entity key properties must uniquely identify an entity type instance within an entity set at run time. As propriedades que compõem uma chave de entidade devem ser escolhidas para garantir a exclusividade de instâncias em um conjunto de entidades.The properties that make up an entity key should be chosen to guarantee uniqueness of instances in an entity set. O elemento Key define uma chave de entidade referenciando uma ou mais das propriedades de um tipo de entidade.The Key element defines an entity key by referencing one or more of the properties of an entity type.

O elemento Key pode ter os seguintes elementos filho:The Key element can have the following child elements:

  • PropertyRef (um ou mais elementos)PropertyRef (one or more elements)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento de chave .Any number of annotation attributes (custom XML attributes) may be applied to the Key element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

ExemploExample

O exemplo a seguir define um tipo de entidade chamado Book.The example below defines an entity type named Book. A chave de entidade é definida referenciando a propriedade ISBN do tipo de entidade.The entity key is defined by referencing the ISBN property of the entity type.

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

A propriedade ISBN é uma boa opção para a chave de entidade porque um ISBN (número de livro padrão internacional) identifica exclusivamente um livro.The ISBN property is a good choice for the entity key because an International Standard Book Number (ISBN) uniquely identifies a book.

O exemplo a seguir mostra um tipo de entidade (autor) que tem uma chave de entidade que consiste em duas propriedades, nome e endereço.The following example shows an entity type (Author) that has an entity key that consists of two properties, Name and Address.

 <EntityType Name="Author">
   <Key>
     <PropertyRef Name="Name" />
     <PropertyRef Name="Address" />
   </Key>
   <Property Type="String" Name="Name" Nullable="false" />
   <Property Type="String" Name="Address" Nullable="false" />
   <NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
                       FromRole="Author" ToRole="Book" />
 </EntityType>

 

Usar o nome e o endereço para a chave de entidade é uma opção razoável, pois dois autores com o mesmo nome provavelmente não residirão no mesmo endereço.Using Name and Address for the entity key is a reasonable choice, because two authors of the same name are unlikely to live at the same address. No entanto, esta opção para uma chave de entidade não garante absolutamente chaves exclusivas de entidade em um conjunto de entidades.However, this choice for an entity key does not absolutely guarantee unique entity keys in an entity set. A adição de uma propriedade, como AuthorId, que poderia ser usada para identificar exclusivamente um autor seria recomendável nesse caso.Adding a property, such as AuthorId, that could be used to uniquely identify an author would be recommended in this case.

 

Elemento member (CSDL)Member Element (CSDL)

O elemento Member é um elemento filho do elemento enumType e define um membro do tipo enumerado.The Member element is a child element of the EnumType element and defines a member of the enumerated type.

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento FunctionImport .The table below describes the attributes that can be applied to the FunctionImport element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome do membro.The name of the member.
ValorValue NãoNo O valor do membro.The value of the member. Por padrão, o primeiro membro tem o valor 0 e o valor de cada enumerador sucessivo é incrementado em 1.By default, the first member has the value 0, and the value of each successive enumerator is incremented by 1. Vários membros com os mesmos valores podem existir.Multiple members with the same values may exist.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento FunctionImport .Any number of annotation attributes (custom XML attributes) may be applied to the FunctionImport element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento enumType com três elementos de membro :The following example shows an EnumType element with three Member elements:

 <EnumType Name="Color">
   <Member Name="Red" Value=”1”/>
   <Member Name="Green" Value=”3” />
   <Member Name="Blue" Value=”5”/>
 </EntityType>

 

 

Um elemento NavigationProperty define uma propriedade de navegação, que fornece uma referência à outra extremidade de uma associação.A NavigationProperty element defines a navigation property, which provides a reference to the other end of an association. Ao contrário das propriedades definidas com o elemento Property, as propriedades de navegação não definem a forma e as características dos dados.Unlike properties defined with the Property element, navigation properties do not define the shape and characteristics of data. Eles fornecem uma maneira de navegar por uma associação entre dois tipos de entidade.They provide a way to navigate an association between two entity types.

Observe que as propriedades de navegação são opcionais em ambos os tipos de entidade termina de uma associação.Note that navigation properties are optional on both entity types at the ends of an association. Se você definir uma propriedade de navegação em um tipo de entidade no final de uma associação, você não precisa definir uma propriedade de navegação no tipo de entidade no outro extremo de associação.If you define a navigation property on one entity type at the end of an association, you do not have to define a navigation property on the entity type at the other end of the association.

O tipo de dados retornado por uma propriedade de navegação é determinado pela multiplicidade de sua extremidade de associação remota.The data type returned by a navigation property is determined by the multiplicity of its remote association end. Por exemplo, suponha que uma propriedade de navegação, OrdersNavProp, exista em um tipo de entidade Customer e navegue por uma associação um-para-muitos entre Customer e Order.For example, suppose a navigation property, OrdersNavProp, exists on a Customer entity type and navigates a one-to-many association between Customer and Order. Como a extremidade de associação remota para a propriedade de navegação possui multiplicidade de muitos ( * ), seu tipo de dados é uma coleção (de ordem).Because the remote association end for the navigation property has multiplicity many (*), its data type is a collection (of Order). Da mesma forma, se uma propriedade de navegação, CustomerNavProp, existir no tipo de entidade Order , seu tipo de dados será Customer , pois a multiplicidade da extremidade remota é um (1).Similarly, if a navigation property, CustomerNavProp, exists on the Order entity type, its data type would be Customer since the multiplicity of the remote end is one (1).

Um elemento NavigationProperty pode ter os seguintes elementos filho (na ordem listada):A NavigationProperty element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento NavigationProperty .The table below describes the attributes that can be applied to the NavigationProperty element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome da propriedade de navegação.The name of the navigation property.
RelationshipRelationship SimYes O nome de uma associação que está dentro do escopo do modelo.The name of an association that is within the scope of the model.
ToRoleToRole SimYes O fim da associação na qual a navegação termina.The end of the association at which navigation ends. O valor do atributo ToRole deve ser o mesmo que o valor de um dos atributos role definidos em uma das extremidades de associação (definido no elemento AssociationEnd).The value of the ToRole attribute must be the same as the value of one of the Role attributes defined on one of the association ends (defined in the AssociationEnd element).
FromRoleFromRole SimYes O fim da associação da qual a navegação começa.The end of the association from which navigation begins. O valor do atributo FromRole deve ser o mesmo que o valor de um dos atributos de função definidos em uma das extremidades de associação (definido no elemento AssociationEnd).The value of the FromRole attribute must be the same as the value of one of the Role attributes defined on one of the association ends (defined in the AssociationEnd element).

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento NavigationProperty .Any number of annotation attributes (custom XML attributes) may be applied to the NavigationProperty element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir define um tipo de entidade (Book) com duas propriedades de navegação (PublishedBy e WrittenBy):The following example defines an entity type (Book) with two navigation properties (PublishedBy and WrittenBy):

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

 

Elemento OnDelete (CSDL)OnDelete Element (CSDL)

O elemento OnDelete na linguagem de definição de esquema conceitual (CSDL) define o comportamento que está conectado a uma associação.The OnDelete element in conceptual schema definition language (CSDL) defines behavior that is connected with an association. Se o atributo Action for definido como Cascade em uma extremidade de uma associação, os tipos de entidade relacionados na outra extremidade da Associação serão excluídos quando o tipo de entidade na primeira extremidade for excluído.If the Action attribute is set to Cascade on one end of an association, related entity types on the other end of the association are deleted when the entity type on the first end is deleted. Se a associação entre dois tipos de entidade for uma relação de chave primária de chave para primária, um objeto dependente carregado será excluído quando o objeto principal na outra extremidade da associação for excluído, independentemente da especificação OnDelete .If the association between two entity types is a primary key-to-primary key relationship, then a loaded dependent object is deleted when the principal object on the other end of the association is deleted regardless of the OnDelete specification.  

Observação

O elemento OnDelete afeta apenas o comportamento de tempo de execução de um aplicativo; Ele não afeta o comportamento na fonte de dados.The OnDelete element only affects the runtime behavior of an application; it does not affect behavior in the data source. O comportamento definido na fonte de dados deve ser igual ao comportamento definido no aplicativo.The behavior defined in the data source should be the same as the behavior defined in the application.

 

Um elemento OnDelete pode ter os seguintes elementos filho (na ordem listada):An OnDelete element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento OnDelete .The table below describes the attributes that can be applied to the OnDelete element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
AçãoAction SimYes Cascade ou None.Cascade or None. Se os tipos de entidade em cascata, dependentes serão excluídos quando o tipo de entidade principal for excluído.If Cascade, dependent entity types will be deleted when the principal entity type is deleted. Se nenhum, os tipos de entidade dependentes não serão excluídos quando o tipo de entidade principal for excluído.If None, dependent entity types will not be deleted when the principal entity type is deleted.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento Association .Any number of annotation attributes (custom XML attributes) may be applied to the Association element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento Association que define a associação CustomerOrders .The following example shows an Association element that defines the CustomerOrders association. O elemento OnDelete indica que todos os pedidos relacionados a um cliente específico e que foram carregados no ObjectContext serão excluídos quando o cliente for excluído.The OnDelete element indicates that all Orders that are related to a particular Customer and have been loaded into the ObjectContext will be deleted when the Customer is deleted.

 <Association Name="CustomerOrders">
   <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1">
         <OnDelete Action="Cascade" />
   </End>
   <End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
 </Association>

 

 

Elemento Parameter (CSDL)Parameter Element (CSDL)

O elemento Parameter na linguagem de definição de esquema conceitual (CSDL) pode ser um filho do elemento FunctionImport ou do elemento Function.The Parameter element in conceptual schema definition language (CSDL) can be a child of the FunctionImport element or the Function element.

Aplicativo de elemento FunctionImportFunctionImport Element Application

Um elemento Parameter (como um filho do elemento FunctionImport ) é usado para definir parâmetros de entrada e saída para importações de função que são declaradas em CSDL.A Parameter element (as a child of the FunctionImport element) is used to define input and output parameters for function imports that are declared in CSDL.

O elemento Parameter pode ter os seguintes elementos filho (na ordem listada):The Parameter element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento permitido)Documentation (zero or one elements allowed)
  • Elementos de anotação (zero ou mais elementos permitidos)Annotation elements (zero or more elements allowed)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento Parameter .The following table describes the attributes that can be applied to the Parameter element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome do parâmetro.The name of the parameter.
TipoType SimYes O tipo de parâmetro.The parameter type. O valor deve ser um EDMSimpleType ou um tipo complexo que está dentro do escopo do modelo.The value must be an EDMSimpleType or a complex type that is within the scope of the model.
ModoMode NãoNo In, outou Inout , dependendo se o parâmetro é um parâmetro de entrada, saída ou entrada/saída.In, Out, or InOut depending on whether the parameter is an input, output, or input/output parameter.
MaxLengthMaxLength NãoNo O comprimento máximo permitido do parâmetro.The maximum allowed length of the parameter.
PrecisãoPrecision NãoNo A precisão do parâmetro.The precision of the parameter.
DimensionarScale NãoNo A escala do parâmetro.The scale of the parameter.
SRIDSRID NãoNo Identificador de referência de sistema espacial.Spatial System Reference Identifier. Válido somente para parâmetros de tipos espaciais.Valid only for parameters of spatial types. Para obter mais informações, consulte SRID e SRID (SQL Server).For more information, see SRID and SRID (SQL Server).

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento Parameter .Any number of annotation attributes (custom XML attributes) may be applied to the Parameter element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento FunctionImport com um elemento filho de parâmetro .The following example shows a FunctionImport element with one Parameter child element. A função aceita um parâmetro de entrada e retorna uma coleção de tipos de entidade.The function accepts one input parameter and returns a collection of entity types.

 <FunctionImport Name="GetStudentGrades"
                 EntitySet="StudentGrade"
                 ReturnType="Collection(SchoolModel.StudentGrade)">
        <Parameter Name="StudentID" Mode="In" Type="Int32" />
 </FunctionImport>

 

Aplicativo de elemento de funçãoFunction Element Application

Um elemento Parameter (como um filho do elemento Function ) define parâmetros para funções que são definidas ou declaradas em um modelo conceitual.A Parameter element (as a child of the Function element) defines parameters for functions that are defined or declared in a conceptual model.

O elemento Parameter pode ter os seguintes elementos filho (na ordem listada):The Parameter element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one elements)
  • CollectionType (zero ou um elemento)CollectionType (zero or one elements)
  • ReferenceType (zero ou um elemento)ReferenceType (zero or one elements)
  • RowType (zero ou um elemento)RowType (zero or one elements)

Observação

Somente um dos elementos CollectionType, ReferenceTypeou RowType pode ser um elemento filho de um elemento Property .Only one of the CollectionType, ReferenceType, or RowType elements can be a child element of a Property element.

 

  • Elementos de anotação (zero ou mais elementos permitidos)Annotation elements (zero or more elements allowed)

Observação

Os elementos de anotação devem aparecer após todos os outros elementos filho.Annotation elements must appear after all other child elements. Os elementos de anotação são permitidos somente no CSDL V2 e posterior.Annotation elements are only allowed in CSDL v2 and later.

 

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento Parameter .The following table describes the attributes that can be applied to the Parameter element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome do parâmetro.The name of the parameter.
TipoType NãoNo O tipo de parâmetro.The parameter type. Um parâmetro pode ser qualquer um dos seguintes tipos (ou coleções desses tipos):A parameter can be any of the following types (or collections of these types):
EdmSimpleTypeEdmSimpleType
tipo de entidadeentity type
tipo complexocomplex type
tipo de linharow type
tipo de referênciareference type
Permite valor nuloNullable NãoNo True (o valor padrão) ou false , dependendo se a propriedade pode ter um valor nulo .True (the default value) or False depending on whether the property can have a null value.
DefaultValueDefaultValue NãoNo O valor padrão da propriedade.The default value of the property.
MaxLengthMaxLength NãoNo O comprimento máximo do valor da propriedade.The maximum length of the property value.
CadeiaFixedLength NãoNo True ou false dependendo se o valor da propriedade será armazenado como uma cadeia de caracteres de comprimento fixo.True or False depending on whether the property value will be stored as a fixed length string.
PrecisãoPrecision NãoNo A precisão do valor da propriedade.The precision of the property value.
DimensionarScale NãoNo A escala do valor da propriedade.The scale of the property value.
SRIDSRID NãoNo Identificador de referência de sistema espacial.Spatial System Reference Identifier. Válido somente para propriedades de tipos espaciais.Valid only for properties of spatial types. Para obter mais informações, consulte SRID e SRID (SQL Server).For more information, see SRID and SRID (SQL Server).
UnicodeUnicode NãoNo True ou false dependendo se o valor da propriedade será armazenado como uma cadeia de caracteres Unicode.True or False depending on whether the property value will be stored as a Unicode string.
OrdenaçãoCollation NãoNo Uma cadeia de caracteres que especifica a sequência de agrupamento a ser usada na fonte de dados.A string that specifies the collating sequence to be used in the data source.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento Parameter .Any number of annotation attributes (custom XML attributes) may be applied to the Parameter element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento Function que usa um elemento filho de parâmetro para definir um parâmetro de função.The following example shows a Function element that uses one Parameter child element to define a function parameter.

 <Function Name="GetYearsEmployed" ReturnType="Edm.Int32">
 <Parameter Name="Instructor" Type="SchoolModel.Person" />
   <DefiningExpression>
   Year(CurrentDateTime()) - Year(cast(Instructor.HireDate as DateTime))
   </DefiningExpression>
 </Function>

 

Elemento principal (CSDL)Principal Element (CSDL)

O elemento principal na CSDL (linguagem de definição de esquema conceitual) é um elemento filho para o elemento ReferentialConstraint que define a extremidade principal de uma restrição referencial.The Principal element in conceptual schema definition language (CSDL) is a child element to the ReferentialConstraint element that defines the principal end of a referential constraint. Um elemento ReferentialConstraint define a funcionalidade que é semelhante a uma restrição de integridade referencial em um banco de dados relacional.A ReferentialConstraint element defines functionality that is similar to a referential integrity constraint in a relational database. Da mesma forma que uma coluna (ou colunas) de uma tabela de base de dados podem fazer referência a chave primária de outra tabela, propriedade (ou propriedades) de tipo de entidade podem fazer referência chave de entidade de outro tipo de objeto.In the same way that a column (or columns) from a database table can reference the primary key of another table, a property (or properties) of an entity type can reference the entity key of another entity type. O tipo de entidade referenciado é chamado de extremidade principal da restrição.The entity type that is referenced is called the principal end of the constraint. O tipo de entidade que faz referência à extremidade principal é chamado de extremidade dependente da restrição.The entity type that references the principal end is called the dependent end of the constraint. Os elementos PropertyRef são usados para especificar quais chaves são referenciadas pela extremidade dependente.PropertyRef elements are used to specify which keys are referenced by the dependent end.

O elemento principal pode ter os seguintes elementos filho (na ordem listada):The Principal element can have the following child elements (in the order listed):

  • PropertyRef (um ou mais elementos)PropertyRef (one or more elements)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento principal .The table below describes the attributes that can be applied to the Principal element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
FunçãoRole SimYes O nome do tipo de entidade na extremidade principal da associação.The name of the entity type on the principal end of the association.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento principal .Any number of annotation attributes (custom XML attributes) may be applied to the Principal element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento ReferentialConstraint que faz parte da definição da Associação PublishedBy .The following example shows a ReferentialConstraint element that is part of the definition of the PublishedBy association. A propriedade ID do tipo de entidade Editor compõe a extremidade principal da restrição referencial.The Id property of the Publisher entity type makes up the principal end of the referential constraint.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

Elemento Property (CSDL)Property Element (CSDL)

O elemento Property na linguagem de definição de esquema conceitual (CSDL) pode ser filho do elemento EntityType, do elemento complexType ou do elemento RowType.The Property element in conceptual schema definition language (CSDL) can be a child of the EntityType element, the ComplexType element, or the RowType element.

Aplicativos de elemento EntityType e complexTypeEntityType and ComplexType Element Applications

Os elementos de Propriedade (como filhos de EntityType ou elementos complexType ) definem a forma e as características dos dados que uma instância de tipo de entidade ou instância de tipo complexo conterá.Property elements (as children of EntityType or ComplexType elements) define the shape and characteristics of data that an entity type instance or complex type instance will contain. As propriedades em um modelo conceitual são análogas às propriedades definidas em uma classe.Properties in a conceptual model are analogous to properties that are defined on a class. Da mesma forma que as propriedades em uma classe definem a forma da classe e transportam informações sobre objetos, as propriedades em um modelo conceitual definem a forma de um tipo de entidade e transportam informações sobre as instâncias dos tipos de entidade.In the same way that properties on a class define the shape of the class and carry information about objects, properties in a conceptual model define the shape of an entity type and carry information about entity type instances.

O elemento Property pode ter os seguintes elementos filho (na ordem listada):The Property element can have the following child elements (in the order listed):

  • Elemento Documentation (zero ou um elementos permitidos)Documentation Element (zero or one elements allowed)
  • Elementos de anotação (zero ou mais elementos permitidos)Annotation elements (zero or more elements allowed)

As facetas a seguir podem ser aplicadas a um elemento Property : Nullable, DefaultValue, MaxLength, cadeia, Precision, Dimension, Unicode, Collation, ConcurrencyMode.The following facets can be applied to a Property element: Nullable, DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode, Collation, ConcurrencyMode. Facetas são atributos XML que fornecem informações sobre como os valores de propriedade são armazenados no armazenamento de dados.Facets are XML attributes that provide information about how property values are stored in the data store.

Observação

Facetas só podem ser aplicadas a propriedades do tipo EDMSimpleType.Facets can only be applied to properties of type EDMSimpleType.

 

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento Property .The following table describes the attributes that can be applied to the Property element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome da propriedade.The name of the property.
TipoType SimYes O tipo do valor da propriedade.The type of the property value. O tipo de valor de propriedade deve ser um EDMSimpleType ou um tipo complexo (indicado por um nome totalmente qualificado) que está dentro do escopo do modelo.The property value type must be an EDMSimpleType or a complex type (indicated by a fully-qualified name) that is within scope of the model.
Permite valor nuloNullable NãoNo True (o valor padrão) ou False, dependendo se a propriedade pode ter um valor nulo.True (the default value) or False depending on whether the property can have a null value.
[!NOTE]
> no CSDL v1, uma propriedade de tipo complexo deve ter Nullable="False" .> In the CSDL v1 a complex type property must have Nullable="False".
DefaultValueDefaultValue NãoNo O valor padrão da propriedade.The default value of the property.
MaxLengthMaxLength NãoNo O comprimento máximo do valor da propriedade.The maximum length of the property value.
CadeiaFixedLength NãoNo True ou false dependendo se o valor da propriedade será armazenado como uma cadeia de caracteres de comprimento fixo.True or False depending on whether the property value will be stored as a fixed length string.
PrecisãoPrecision NãoNo A precisão do valor da propriedade.The precision of the property value.
DimensionarScale NãoNo A escala do valor da propriedade.The scale of the property value.
SRIDSRID NãoNo Identificador de referência de sistema espacial.Spatial System Reference Identifier. Válido somente para propriedades de tipos espaciais.Valid only for properties of spatial types. Para obter mais informações, consulte SRID e SRID (SQL Server).For more information, see SRID and SRID (SQL Server).
UnicodeUnicode NãoNo True ou false dependendo se o valor da propriedade será armazenado como uma cadeia de caracteres Unicode.True or False depending on whether the property value will be stored as a Unicode string.
OrdenaçãoCollation NãoNo Uma cadeia de caracteres que especifica a sequência de agrupamento a ser usada na fonte de dados.A string that specifies the collating sequence to be used in the data source.
ConcurrencyModeConcurrencyMode NãoNo Nenhum (o valor padrão) ou Fixo.None (the default value) or Fixed. Se o valor for definido como Fixo, o valor da propriedade será usado na verificação de simultaneidade otimista.If the value is set to Fixed, the property value will be used in optimistic concurrency checks.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento Property .Any number of annotation attributes (custom XML attributes) may be applied to the Property element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento EntityType com três elementos Property :The following example shows an EntityType element with three Property elements:

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

O exemplo a seguir mostra um elemento complexType com cinco elementos Property :The following example shows a ComplexType element with five Property elements:

 <ComplexType Name="Address" >
   <Property Type="String" Name="StreetAddress" Nullable="false" />
   <Property Type="String" Name="City" Nullable="false" />
   <Property Type="String" Name="StateOrProvince" Nullable="false" />
   <Property Type="String" Name="Country" Nullable="false" />
   <Property Type="String" Name="PostalCode" Nullable="false" />
 </ComplexType>

 

Aplicativo de elemento RowTypeRowType Element Application

Elementos de Propriedade (como os filhos de um elemento RowType ) definem a forma e as características dos dados que podem ser passados para ou retornados de uma função definida pelo modelo.Property elements (as the children of a RowType element) define the shape and characteristics of data that can be passed to or returned from a model-defined function.  

O elemento Property pode ter exatamente um dos seguintes elementos filho:The Property element can have exactly one of the following child elements:

  • CollectionTypeCollectionType
  • ReferenceTypeReferenceType
  • RowTypeRowType

O elemento Property pode ter qualquer elemento de anotação filho de número.The Property element can have any number child annotation elements.

Observação

Os elementos de anotação são permitidos somente no CSDL V2 e posterior.Annotation elements are only allowed in CSDL v2 and later.

 

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento Property .The following table describes the attributes that can be applied to the Property element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome da propriedade.The name of the property.
TipoType SimYes O tipo do valor da propriedade.The type of the property value.
Permite valor nuloNullable NãoNo True (o valor padrão) ou False, dependendo se a propriedade pode ter um valor nulo.True (the default value) or False depending on whether the property can have a null value.
[!NOTE]
> em CSDL v1, uma propriedade de tipo complexo deve ter Nullable="False" .> In CSDL v1 a complex type property must have Nullable="False".
DefaultValueDefaultValue NãoNo O valor padrão da propriedade.The default value of the property.
MaxLengthMaxLength NãoNo O comprimento máximo do valor da propriedade.The maximum length of the property value.
CadeiaFixedLength NãoNo True ou false dependendo se o valor da propriedade será armazenado como uma cadeia de caracteres de comprimento fixo.True or False depending on whether the property value will be stored as a fixed length string.
PrecisãoPrecision NãoNo A precisão do valor da propriedade.The precision of the property value.
DimensionarScale NãoNo A escala do valor da propriedade.The scale of the property value.
SRIDSRID NãoNo Identificador de referência de sistema espacial.Spatial System Reference Identifier. Válido somente para propriedades de tipos espaciais.Valid only for properties of spatial types. Para obter mais informações, consulte SRID e SRID (SQL Server).For more information, see SRID and SRID (SQL Server).
UnicodeUnicode NãoNo True ou false dependendo se o valor da propriedade será armazenado como uma cadeia de caracteres Unicode.True or False depending on whether the property value will be stored as a Unicode string.
OrdenaçãoCollation NãoNo Uma cadeia de caracteres que especifica a sequência de agrupamento a ser usada na fonte de dados.A string that specifies the collating sequence to be used in the data source.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento Property .Any number of annotation attributes (custom XML attributes) may be applied to the Property element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra os elementos de Propriedade usados para definir a forma do tipo de retorno de uma função definida pelo modelo.The following example shows Property elements used to define the shape of the return type of a model-defined function.

 <Function Name="LastNamesAfter">
   <Parameter Name="someString" Type="Edm.String" />
   <ReturnType>
    <CollectionType>
      <RowType>
        <Property Name="FirstName" Type="Edm.String" Nullable="false" />
        <Property Name="LastName" Type="Edm.String" Nullable="false" />
      </RowType>
    </CollectionType>
   </ReturnType>
   <DefiningExpression>
             SELECT VALUE ROW(p.FirstName, p.LastName)
             FROM SchoolEntities.People AS p
             WHERE p.LastName &gt;= somestring
   </DefiningExpression>
 </Function>

 

 

Elemento PropertyRef (CSDL)PropertyRef Element (CSDL)

O elemento PropertyRef na linguagem de definição de esquema conceitual (CSDL) faz referência a uma propriedade de um tipo de entidade para indicar que a propriedade executará uma das seguintes funções:The PropertyRef element in conceptual schema definition language (CSDL) references a property of an entity type to indicate that the property will perform one of the following roles:

  • Parte da chave da entidade (uma propriedade ou um conjunto de propriedades de um tipo de entidade que determinam a identidade).Part of the entity's key (a property or a set of properties of an entity type that determine identity). Um ou mais elementos PropertyRef podem ser usados para definir uma chave de entidade.One or more PropertyRef elements can be used to define an entity key.
  • A extremidade dependente ou principal de uma restrição referencial.The dependent or principal end of a referential constraint.

O elemento PropertyRef só pode ter elementos Annotation (zero ou mais) como elementos filho.The PropertyRef element can only have annotation elements (zero or more) as child elements.

Observação

Os elementos de anotação são permitidos somente no CSDL V2 e posterior.Annotation elements are only allowed in CSDL v2 and later.

 

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento PropertyRef .The table below describes the attributes that can be applied to the PropertyRef element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NomeName SimYes O nome da propriedade referenciada.The name of the referenced property.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento PropertyRef .Any number of annotation attributes (custom XML attributes) may be applied to the PropertyRef element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir define um tipo de entidade (livro).The example below defines an entity type (Book). A chave de entidade é definida referenciando a propriedade ISBN do tipo de entidade.The entity key is defined by referencing the ISBN property of the entity type.

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

No exemplo a seguir, dois elementos PropertyRef são usados para indicar que duas propriedades (ID e PublisherID) são as extremidades principal e dependente de uma restrição referencial.In the next example, two PropertyRef elements are used to indicate that two properties (Id and PublisherId) are the principal and dependent ends of a referential constraint.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

Elemento ReferenceType (CSDL)ReferenceType Element (CSDL)

O elemento ReferenceType na CSDL (linguagem de definição de esquema conceitual) especifica uma referência a um tipo de entidade.The ReferenceType element in conceptual schema definition language (CSDL) specifies a reference to an entity type. O elemento ReferenceType pode ser um filho dos seguintes elementos:The ReferenceType element can be a child of the following elements:

  • ReturnType (função)ReturnType (Function)
  • ParâmetroParameter
  • CollectionTypeCollectionType

O elemento ReferenceType é usado ao definir um parâmetro ou tipo de retorno para uma função.The ReferenceType element is used when defining a parameter or return type for a function.

Um elemento ReferenceType pode ter os seguintes elementos filho (na ordem listada):A ReferenceType element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento ReferenceType .The table below describes the attributes that can be applied to the ReferenceType element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
TipoType SimYes O nome do tipo de entidade que está sendo referenciado.The name of the entity type being referenced.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento ReferenceType .Any number of annotation attributes (custom XML attributes) may be applied to the ReferenceType element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra o elemento ReferenceType usado como um filho de um elemento Parameter em uma função definida pelo modelo que aceita uma referência a um tipo de entidade Person :The following example shows the ReferenceType element used as a child of a Parameter element in a model-defined function that accepts a reference to a Person entity type:

 <Function Name="GetYearsEmployed" ReturnType="Edm.Int32">
   <Parameter Name="instructor">
     <ReferenceType Type="SchoolModel.Person" />
   </Parameter>
   <DefiningExpression>
   Year(CurrentDateTime()) - Year(cast(instructor.HireDate as DateTime))
   </DefiningExpression>
 </Function>

 

O exemplo a seguir mostra o elemento ReferenceType usado como um filho de um elemento ReturnType (Function) em uma função definida pelo modelo que retorna uma referência a um tipo de entidade Person :The following example shows the ReferenceType element used as a child of a ReturnType (Function) element in a model-defined function that returns a reference to a Person entity type:

 <Function Name="GetPersonReference">
     <Parameter Name="p" Type="SchoolModel.Person" />
     <ReturnType>
         <ReferenceType Type="SchoolModel.Person" />
     </ReturnType>
     <DefiningExpression>
           REF(p)
     </DefiningExpression>
 </Function>

 

 

Elemento ReferentialConstraint (CSDL)ReferentialConstraint Element (CSDL)

Um elemento ReferentialConstraint na CSDL (linguagem de definição de esquema conceitual) define a funcionalidade que é semelhante a uma restrição de integridade referencial em um banco de dados relacional.A ReferentialConstraint element in conceptual schema definition language (CSDL) defines functionality that is similar to a referential integrity constraint in a relational database. Da mesma forma que uma coluna (ou colunas) de uma tabela de base de dados podem fazer referência a chave primária de outra tabela, propriedade (ou propriedades) de tipo de entidade podem fazer referência chave de entidade de outro tipo de objeto.In the same way that a column (or columns) from a database table can reference the primary key of another table, a property (or properties) of an entity type can reference the entity key of another entity type. O tipo de entidade referenciado é chamado de extremidade principal da restrição.The entity type that is referenced is called the principal end of the constraint. O tipo de entidade que faz referência à extremidade principal é chamado de extremidade dependente da restrição.The entity type that references the principal end is called the dependent end of the constraint.

Se uma chave estrangeira exposta em um tipo de entidade referenciar uma propriedade em outro tipo de entidade, o elemento ReferentialConstraint definirá uma associação entre os dois tipos de entidade.If a foreign key that is exposed on one entity type references a property on another entity type, the ReferentialConstraint element defines an association between the two entity types. Como o elemento ReferentialConstraint fornece informações sobre como dois tipos de entidade estão relacionados, nenhum elemento AssociationSetMapping correspondente é necessário na MSL (linguagem de especificação de mapeamento).Because the ReferentialConstraint element provides information about how two entity types are related, no corresponding AssociationSetMapping element is necessary in the mapping specification language (MSL). Uma associação entre dois tipos de entidade que não têm chaves estrangeiras expostas deve ter um elemento AssociationSetMapping correspondente para mapear informações de associação para a fonte de dados.An association between two entity types that do not have foreign keys exposed must have a corresponding AssociationSetMapping element in order to map association information to the data source.

Se uma chave estrangeira não for exposta em um tipo de entidade, o elemento ReferentialConstraint só poderá definir uma restrição PRIMARY KEY para Primary Key entre o tipo de entidade e outro tipo de entidade.If a foreign key is not exposed on an entity type, the ReferentialConstraint element can only define a primary key-to-primary key constraint between the entity type and another entity type.

Um elemento ReferentialConstraint pode ter os seguintes elementos filho (na ordem listada):A ReferentialConstraint element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Principal (exatamente um elemento)Principal (exactly one element)
  • Dependente (exatamente um elemento)Dependent (exactly one element)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

O elemento ReferentialConstraint pode ter qualquer número de atributos de anotação (atributos XML personalizados).The ReferentialConstraint element can have any number of annotation attributes (custom XML attributes). No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

ExemploExample

O exemplo a seguir mostra um elemento ReferentialConstraint que está sendo usado como parte da definição da Associação PublishedBy .The following example shows a ReferentialConstraint element being used as part of the definition of the PublishedBy association.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

Elemento ReturnType (Function) (CSDL)ReturnType (Function) Element (CSDL)

O elemento ReturnType (Function) na linguagem de definição de esquema conceitual (CSDL) especifica o tipo de retorno para uma função que é definida em um elemento Function.The ReturnType (Function) element in conceptual schema definition language (CSDL) specifies the return type for a function that is defined in a Function element. Um tipo de retorno de função também pode ser especificado com um atributo ReturnType .A function return type can also be specified with a ReturnType attribute.

Os tipos de retorno podem ser qualquer EdmSimpleType, tipo de entidade, tipo complexo, tipo de linha, tipo de referência ou uma coleção de um desses tipos.Return types can be any EdmSimpleType, entity type, complex type, row type, ref type, or a collection of one of these types.

O tipo de retorno de uma função pode ser especificado com o atributo Type do elemento ReturnType (Function) ou com um dos seguintes elementos filho:The return type of a function can be specified with either the Type attribute of the ReturnType (Function) element, or with one of the following child elements:

  • CollectionTypeCollectionType
  • ReferenceTypeReferenceType
  • RowTypeRowType

Observação

Um modelo não será validado se você especificar um tipo de retorno de função com o atributo Type do elemento ReturnType (função) e um dos elementos filho.A model will not validate if you specify a function return type with both the Type attribute of the ReturnType (Function) element and one of the child elements.

 

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento ReturnType (função).The following table describes the attributes that can be applied to the ReturnType (Function) element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
ReturnTypeReturnType NãoNo O tipo retornado pela função.The type returned by the function.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento ReturnType (função).Any number of annotation attributes (custom XML attributes) may be applied to the ReturnType (Function) element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir usa um elemento Function para definir uma função que retorna o número de anos em que um livro foi impresso.The following example uses a Function element to define a function that returns the number of years a book has been in print. Observe que o tipo de retorno é especificado pelo atributo Type de um elemento ReturnType (Function).Note that the return type is specified by the Type attribute of a ReturnType (Function) element.

 <Function Name="GetYearsInPrint">
   <ReturnType Type=="Edm.Int32">
   <Parameter Name="book" Type="BooksModel.Book" />
   <DefiningExpression>
    Year(CurrentDateTime()) - Year(cast(book.PublishedDate as DateTime))
   </DefiningExpression>
 </Function>

 

 

Elemento ReturnType (FunctionImport) (CSDL)ReturnType (FunctionImport) Element (CSDL)

O elemento ReturnType (FunctionImport) na linguagem de definição de esquema conceitual (CSDL) especifica o tipo de retorno para uma função que é definida em um elemento FunctionImport.The ReturnType (FunctionImport) element in conceptual schema definition language (CSDL) specifies the return type for a function that is defined in a FunctionImport element. Um tipo de retorno de função também pode ser especificado com um atributo ReturnType .A function return type can also be specified with a ReturnType attribute.

Tipos de retorno podem ser qualquer coleção de tipo de entidade, tipo complexo ou EdmSimpleType,Return types can be any collection of entity type, complex type,or EdmSimpleType,

O tipo de retorno de uma função é especificado com o atributo Type do elemento ReturnType (FunctionImport).The return type of a function is specified with the Type attribute of the ReturnType (FunctionImport) element.

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento ReturnType (FunctionImport).The following table describes the attributes that can be applied to the ReturnType (FunctionImport) element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
TipoType NãoNo O tipo que a função retorna.The type that the function returns. O valor deve ser uma coleção de complexType, EntityType ou EDMSimpleType.The value must be a collection of ComplexType, EntityType, or EDMSimpleType.
EntitySetEntitySet NãoNo Se a função retornar uma coleção de tipos de entidade, o valor do EntitySet deverá ser o conjunto de entidades ao qual a coleção pertence.If the function returns a collection of entity types, the value of the EntitySet must be the entity set to which the collection belongs. Caso contrário, o atributo EntitySet não deve ser usado.Otherwise, the EntitySet attribute must not be used.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento ReturnType (FunctionImport).Any number of annotation attributes (custom XML attributes) may be applied to the ReturnType (FunctionImport) element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir usa uma FunctionImport que retorna livros e publicadores.The following example uses a FunctionImport that returns books and publishers. Observe que a função retorna dois conjuntos de resultados e, portanto, dois elementos ReturnType (FunctionImport) são especificados.Note that the function returns two result sets and therefore two ReturnType (FunctionImport) elements are specified.

 <FunctionImport Name="GetBooksAndPublishers">
   <ReturnType Type=="Collection(BooksModel.Book )" EntitySet=”Books”>
   <ReturnType Type=="Collection(BooksModel.Publisher)" EntitySet=”Publishers”>
 </FunctionImport>

 

 

Elemento RowType (CSDL)RowType Element (CSDL)

Um elemento RowType na CSDL (linguagem de definição de esquema conceitual) define uma estrutura sem nome como um parâmetro ou tipo de retorno para uma função definida no modelo conceitual.A RowType element in conceptual schema definition language (CSDL) defines an unnamed structure as a parameter or return type for a function defined in the conceptual model.

Um elemento RowType pode ser o filho dos seguintes elementos:A RowType element can be the child of the following elements:

  • CollectionTypeCollectionType
  • ParâmetroParameter
  • ReturnType (função)ReturnType (Function)

Um elemento RowType pode ter os seguintes elementos filho (na ordem listada):A RowType element can have the following child elements (in the order listed):

  • Propriedade (um ou mais)Property (one or more)
  • Elementos de anotação (zero ou mais)Annotation elements (zero or more)

Atributos aplicáveisApplicable Attributes

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento RowType .Any number of annotation attributes (custom XML attributes) may be applied to the RowType element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

ExemploExample

O exemplo a seguir mostra uma função definida pelo modelo que usa um elemento CollectionType para especificar que a função retorna uma coleção de linhas (conforme especificado no elemento RowType ).The following example shows a model-defined function that uses a CollectionType element to specify that the function returns a collection of rows (as specified in the RowType element).

 <Function Name="LastNamesAfter">
   <Parameter Name="someString" Type="Edm.String" />
   <ReturnType>
    <CollectionType>
      <RowType>
        <Property Name="FirstName" Type="Edm.String" Nullable="false" />
        <Property Name="LastName" Type="Edm.String" Nullable="false" />
      </RowType>
    </CollectionType>
   </ReturnType>
   <DefiningExpression>
             SELECT VALUE ROW(p.FirstName, p.LastName)
             FROM SchoolEntities.People AS p
             WHERE p.LastName &gt;= somestring
   </DefiningExpression>
 </Function>

Elemento Schema (CSDL)Schema Element (CSDL)

O elemento Schema é o elemento raiz de uma definição de modelo conceitual.The Schema element is the root element of a conceptual model definition. Ele contém definições para os objetos, funções e contêineres que compõem um modelo conceitual.It contains definitions for the objects, functions, and containers that make up a conceptual model.

O elemento Schema pode conter zero ou mais dos seguintes elementos filho:The Schema element may contain zero or more of the following child elements:

  • UsarUsing
  • EntityContainerEntityContainer
  • EntityTypeEntityType
  • EnumTypeEnumType
  • AssociaçãoAssociation
  • ComplexTypeComplexType
  • FunçãoFunction

Um elemento de esquema pode conter zero ou um dos elementos de anotação.A Schema element may contain zero or one Annotation elements.

Observação

Os elementos de função e de anotação são permitidos somente no CSDL V2 e posterior.The Function element and annotation elements are only allowed in CSDL v2 and later.

 

O elemento Schema usa o atributo namespace para definir o namespace para o tipo de entidade, tipo complexo e objetos de associação em um modelo conceitual.The Schema element uses the Namespace attribute to define the namespace for the entity type, complex type, and association objects in a conceptual model. Em um namespace, dois objetos não podem ter o mesmo nome.Within a namespace, no two objects can have the same name. Os namespaces podem abranger vários elementos de esquema e vários arquivos. CSDL.Namespaces can span multiple Schema elements and multiple .csdl files.

Um namespace de modelo conceitual é diferente do namespace XML do elemento Schema .A conceptual model namespace is different from the XML namespace of the Schema element. Um namespace de modelo conceitual (conforme definido pelo atributo namespace ) é um contêiner lógico para tipos de entidade, tipos complexos e tipos de associação.A conceptual model namespace (as defined by the Namespace attribute) is a logical container for entity types, complex types, and association types. O namespace XML (indicado pelo atributo xmlns ) de um elemento Schema é o namespace padrão para elementos filho e atributos do elemento Schema .The XML namespace (indicated by the xmlns attribute) of a Schema element is the default namespace for child elements and attributes of the Schema element. Os namespaces XML do formulário https://schemas.microsoft.com/ado/YYYY/MM/edm (em que AAAA e mm representam um ano e um mês respectivamente) são reservados para CSDL.XML namespaces of the form https://schemas.microsoft.com/ado/YYYY/MM/edm (where YYYY and MM represent a year and month respectively) are reserved for CSDL. Atributos e elementos personalizados não podem estar em namespaces que tenham esse formulário.Custom elements and attributes cannot be in namespaces that have this form.

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento Schema .The table below describes the attributes can be applied to the Schema element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NamespaceNamespace SimYes O namespace do modelo conceitual.The namespace of the conceptual model. O valor do atributo namespace é usado para formar o nome totalmente qualificado de um tipo.The value of the Namespace attribute is used to form the fully qualified name of a type. Por exemplo, se um EntityType chamado Customer estiver no namespace simples. example. Model, o nome totalmente qualificado do EntityType será SimpleExampleModel. Customer.For example, if an EntityType named Customer is in the Simple.Example.Model namespace, then the fully qualified name of the EntityType is SimpleExampleModel.Customer.
As cadeias de caracteres a seguir não podem ser usadas como o valor do atributo de namespace : System, transitórioou EDM.The following strings cannot be used as the value for the Namespace attribute: System, Transient, or Edm. O valor do atributo namespace não pode ser o mesmo que o valor do atributo namespace no elemento de esquema SSDL.The value for the Namespace attribute cannot be the same as the value for the Namespace attribute in the SSDL Schema element.
AliasAlias NãoNo Um identificador usado no lugar do nome do namespace.An identifier used in place of the namespace name. Por exemplo, se um EntityType chamado Customer estiver no namespace simples. example. Model e o valor do atributo alias for Model, você poderá usar Model. Customer como o nome totalmente qualificado do EntityType.For example, if an EntityType named Customer is in the Simple.Example.Model namespace and the value of the Alias attribute is Model, then you can use Model.Customer as the fully qualified name of the EntityType.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento de esquema .Any number of annotation attributes (custom XML attributes) may be applied to the Schema element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra um elemento de esquema que contém um elemento EntityContainer , dois elementos EntityType e um elemento Association .The following example shows a Schema element that contains an EntityContainer element, two EntityType elements, and one Association element.

 <Schema xmlns="https://schemas.microsoft.com/ado/2009/11/edm"
      xmlns:cg="https://schemas.microsoft.com/ado/2009/11/codegeneration"
      xmlns:store="https://schemas.microsoft.com/ado/2009/11/edm/EntityStoreSchemaGenerator"
       Namespace="ExampleModel" Alias="Self">
         <EntityContainer Name="ExampleModelContainer">
           <EntitySet Name="Customers"
                      EntityType="ExampleModel.Customer" />
           <EntitySet Name="Orders" EntityType="ExampleModel.Order" />
           <AssociationSet
                       Name="CustomerOrder"
                       Association="ExampleModel.CustomerOrders">
             <End Role="Customer" EntitySet="Customers" />
             <End Role="Order" EntitySet="Orders" />
           </AssociationSet>
         </EntityContainer>
         <EntityType Name="Customer">
           <Key>
             <PropertyRef Name="CustomerId" />
           </Key>
           <Property Type="Int32" Name="CustomerId" Nullable="false" />
           <Property Type="String" Name="Name" Nullable="false" />
           <NavigationProperty
                    Name="Orders"
                    Relationship="ExampleModel.CustomerOrders"
                    FromRole="Customer" ToRole="Order" />
         </EntityType>
         <EntityType Name="Order">
           <Key>
             <PropertyRef Name="OrderId" />
           </Key>
           <Property Type="Int32" Name="OrderId" Nullable="false" />
           <Property Type="Int32" Name="ProductId" Nullable="false" />
           <Property Type="Int32" Name="Quantity" Nullable="false" />
           <NavigationProperty
                    Name="Customer"
                    Relationship="ExampleModel.CustomerOrders"
                    FromRole="Order" ToRole="Customer" />
           <Property Type="Int32" Name="CustomerId" Nullable="false" />
         </EntityType>
         <Association Name="CustomerOrders">
           <End Type="ExampleModel.Customer"
                Role="Customer" Multiplicity="1" />
           <End Type="ExampleModel.Order"
                Role="Order" Multiplicity="*" />
           <ReferentialConstraint>
             <Principal Role="Customer">
               <PropertyRef Name="CustomerId" />
             </Principal>
             <Dependent Role="Order">
               <PropertyRef Name="CustomerId" />
             </Dependent>
           </ReferentialConstraint>
         </Association>
       </Schema>

 

 

Elemento TypeRef (CSDL)TypeRef Element (CSDL)

O elemento TypeRef na linguagem de definição de esquema conceitual (CSDL) fornece uma referência a um tipo nomeado existente.The TypeRef element in conceptual schema definition language (CSDL) provides a reference to an existing named type. O elemento TypeRef pode ser um filho do elemento CollectionType, que é usado para especificar que uma função tem uma coleção como um tipo de parâmetro ou de retorno.The TypeRef element can be a child of the CollectionType element, which is used to specify that a function has a collection as a parameter or return type.

Um elemento TypeRef pode ter os seguintes elementos filho (na ordem listada):A TypeRef element can have the following child elements (in the order listed):

  • Documentação (zero ou um elemento)Documentation (zero or one element)
  • Elementos de anotação (zero ou mais elementos)Annotation elements (zero or more elements)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento TypeRef .The following table describes the attributes that can be applied to the TypeRef element. Observe que os atributos DefaultValue, MaxLength, cadeia, Precision, Scale, Unicodee Collation são aplicáveis somente ao EDMSimpleTypes.Note that the DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode, and Collation attributes are only applicable to EDMSimpleTypes.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
TipoType NãoNo O nome do tipo que está sendo referenciado.The name of the type being referenced.
Permite valor nuloNullable NãoNo True (o valor padrão) ou False, dependendo se a propriedade pode ter um valor nulo.True (the default value) or False depending on whether the property can have a null value.
[!NOTE]
> em CSDL v1, uma propriedade de tipo complexo deve ter Nullable="False" .> In CSDL v1 a complex type property must have Nullable="False".
DefaultValueDefaultValue NãoNo O valor padrão da propriedade.The default value of the property.
MaxLengthMaxLength NãoNo O comprimento máximo do valor da propriedade.The maximum length of the property value.
CadeiaFixedLength NãoNo True ou false dependendo se o valor da propriedade será armazenado como uma cadeia de caracteres de comprimento fixo.True or False depending on whether the property value will be stored as a fixed length string.
PrecisãoPrecision NãoNo A precisão do valor da propriedade.The precision of the property value.
DimensionarScale NãoNo A escala do valor da propriedade.The scale of the property value.
SRIDSRID NãoNo Identificador de referência de sistema espacial.Spatial System Reference Identifier. Válido somente para propriedades de tipos espaciais.Valid only for properties of spatial types. Para obter mais informações, consulte SRID e SRID (SQL Server).For more information, see SRID and SRID (SQL Server).
UnicodeUnicode NãoNo True ou false dependendo se o valor da propriedade será armazenado como uma cadeia de caracteres Unicode.True or False depending on whether the property value will be stored as a Unicode string.
OrdenaçãoCollation NãoNo Uma cadeia de caracteres que especifica a sequência de agrupamento a ser usada na fonte de dados.A string that specifies the collating sequence to be used in the data source.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento CollectionType .Any number of annotation attributes (custom XML attributes) may be applied to the CollectionType element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir mostra uma função definida pelo modelo que usa o elemento TypeRef (como um filho de um elemento CollectionType ) para especificar que a função aceita uma coleção de tipos de entidade Department .The following example shows a model-defined function that uses the TypeRef element (as a child of a CollectionType element) to specify that the function accepts a collection of Department entity types.

 <Function Name="GetAvgBudget">
      <Parameter Name="Departments">
          <CollectionType>
             <TypeRef Type="SchoolModel.Department"/>
          </CollectionType>
           </Parameter>
       <ReturnType Type="Collection(Edm.Decimal)"/>
       <DefiningExpression>
             SELECT VALUE AVG(d.Budget) FROM Departments AS d
       </DefiningExpression>
 </Function>

 

 

Elemento using (CSDL)Using Element (CSDL)

O elemento using na linguagem de definição de esquema conceitual (CSDL) importa o conteúdo de um modelo conceitual que existe em um namespace diferente.The Using element in conceptual schema definition language (CSDL) imports the contents of a conceptual model that exists in a different namespace. Ao definir o valor do atributo namespace , você pode se referir a tipos de entidade, tipos complexos e tipos de associação que são definidos em outro modelo conceitual.By setting the value of the Namespace attribute, you can refer to entity types, complex types, and association types that are defined in another conceptual model. Mais de um elemento using pode ser um filho de um elemento Schema .More than one Using element can be a child of a Schema element.

Observação

O elemento using em CSDL não funciona exatamente como uma instrução using em uma linguagem de programação.The Using element in CSDL does not function exactly like a using statement in a programming language. Ao importar um namespace com uma instrução using em uma linguagem de programação, você não afeta os objetos no namespace original.By importing a namespace with a using statement in a programming language, you do not affect objects in the original namespace. No CSDL, um namespace importado pode conter um tipo de entidade derivado de um tipo de entidade no namespace original.In CSDL, an imported namespace can contain an entity type that is derived from an entity type in the original namespace. Isso pode afetar os conjuntos de entidades declarados no namespace original.This can affect entity sets declared in the original namespace.

 

O elemento using pode ter os seguintes elementos filho:The Using element can have the following child elements:

  • Documentação (zero ou um elemento permitido)Documentation (zero or one elements allowed)
  • Elementos de anotação (zero ou mais elementos permitidos)Annotation elements (zero or more elements allowed)

Atributos aplicáveisApplicable Attributes

A tabela a seguir descreve os atributos que podem ser aplicados ao elemento using .The table below describes the attributes can be applied to the Using element.

Nome do atributoAttribute Name ObrigatórioIs Required ValorValue
NamespaceNamespace SimYes O nome do namespace importado.The name of the imported namespace.
AliasAlias SimYes Um identificador usado no lugar do nome do namespace.An identifier used in place of the namespace name. Embora esse atributo seja necessário, não é necessário que ele seja usado no lugar do nome do namespace para qualificar nomes de objeto.Although this attribute is required, it is not required that it be used in place of the namespace name to qualify object names.

 

Observação

Qualquer número de atributos de anotação (atributos XML personalizados) pode ser aplicado ao elemento using .Any number of annotation attributes (custom XML attributes) may be applied to the Using element. No entanto, os atributos personalizados podem não pertencer a nenhum namespace XML reservado para CSDL.However, custom attributes may not belong to any XML namespace that is reserved for CSDL. Os nomes totalmente qualificados para dois atributos personalizados não podem ser iguais.The fully-qualified names for any two custom attributes cannot be the same.

 

ExemploExample

O exemplo a seguir demonstra o elemento using que está sendo usado para importar um namespace que é definido em outro lugar.The following example demonstrates the Using element being used to import a namespace that is defined elsewhere. Observe que o namespace para o elemento de esquema mostrado é BooksModel .Note that the namespace for the Schema element shown is BooksModel. A Address propriedade em Publisher EntityType é um tipo complexo que é definido no ExtendedBooksModel namespace (importado com o elemento using ).The Address property on the PublisherEntityType is a complex type that is defined in the ExtendedBooksModel namespace (imported with the Using element).

 <Schema xmlns="https://schemas.microsoft.com/ado/2009/11/edm"
           xmlns:cg="https://schemas.microsoft.com/ado/2009/11/codegeneration"
           xmlns:store="https://schemas.microsoft.com/ado/2009/11/edm/EntityStoreSchemaGenerator"
           Namespace="BooksModel" Alias="Self">

     <Using Namespace="BooksModel.Extended" Alias="BMExt" />

 <EntityContainer Name="BooksContainer" >
       <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
     </EntityContainer>

 <EntityType Name="Publisher">
       <Key>
         <PropertyRef Name="Id" />
       </Key>
       <Property Type="Int32" Name="Id" Nullable="false" />
       <Property Type="String" Name="Name" Nullable="false" />
       <Property Type="BMExt.Address" Name="Address" Nullable="false" />
     </EntityType>

 </Schema>

 

 

Atributos de anotação (CSDL)Annotation Attributes (CSDL)

Os atributos de anotação em CSDL (linguagem de definição de esquema conceitual) são atributos XML personalizados no modelo conceitual.Annotation attributes in conceptual schema definition language (CSDL) are custom XML attributes in the conceptual model. Além de ter uma estrutura XML válida, o seguinte deve ser verdadeiro dos atributos de anotação:In addition to having valid XML structure, the following must be true of annotation attributes:

  • Os atributos de anotação não devem estar em nenhum namespace XML reservado para CSDL.Annotation attributes must not be in any XML namespace that is reserved for CSDL.
  • Mais de um atributo Annotation pode ser aplicado a um determinado elemento CSDL.More than one annotation attribute may be applied to a given CSDL element.
  • Os nomes totalmente qualificados de quaisquer dois atributos de anotação não devem ser iguais.The fully-qualified names of any two annotation attributes must not be the same.

Os atributos de anotação podem ser usados para fornecer metadados extras sobre os elementos em um modelo conceitual.Annotation attributes can be used to provide extra metadata about the elements in a conceptual model. Os metadados contidos nos elementos de anotação podem ser acessados em tempo de execução usando classes no namespace System. Data. Metadata. Edm.Metadata contained in annotation elements can be accessed at runtime by using classes in the System.Data.Metadata.Edm namespace.

ExemploExample

O exemplo a seguir mostra um elemento EntityType com um atributo de anotação (CustomAttribute).The following example shows an EntityType element with an annotation attribute (CustomAttribute). O exemplo também mostra um elemento Annotation aplicado ao elemento tipo de entidade.The example also shows an annotation element applied to the entity type element.

 <Schema Namespace="SchoolModel" Alias="Self"
         xmlns:annotation="https://schemas.microsoft.com/ado/2009/02/edm/annotation"
         xmlns="https://schemas.microsoft.com/ado/2009/11/edm">
   <EntityContainer Name="SchoolEntities" annotation:LazyLoadingEnabled="true">
     <EntitySet Name="People" EntityType="SchoolModel.Person" />
   </EntityContainer>
   <EntityType Name="Person" xmlns:p="http://CustomNamespace.com"
               p:CustomAttribute="Data here.">
     <Key>
       <PropertyRef Name="PersonID" />
     </Key>
     <Property Name="PersonID" Type="Int32" Nullable="false"
               annotation:StoreGeneratedPattern="Identity" />
     <Property Name="LastName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="FirstName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="HireDate" Type="DateTime" />
     <Property Name="EnrollmentDate" Type="DateTime" />
     <p:CustomElement>
       Custom metadata.
     </p:CustomElement>
   </EntityType>
 </Schema>

 

O código a seguir recupera os metadados no atributo Annotation e grava-os no console:The following code retrieves the metadata in the annotation attribute and writes it to the console:

 EdmItemCollection collection = new EdmItemCollection("School.csdl");
 MetadataWorkspace workspace = new MetadataWorkspace();
 workspace.RegisterItemCollection(collection);
 EdmType contentType;
 workspace.TryGetType("Person", "SchoolModel", DataSpace.CSpace, out contentType);
 if (contentType.MetadataProperties.Contains("http://CustomNamespace.com:CustomAttribute"))
 {
     MetadataProperty annotationProperty =
         contentType.MetadataProperties["http://CustomNamespace.com:CustomAttribute"];
     object annotationValue = annotationProperty.Value;
     Console.WriteLine(annotationValue.ToString());
 }

 

O código acima pressupõe que o School.csdl arquivo está no diretório de saída do projeto e que você adicionou as Imports instruções e a seguir Using ao seu projeto:The code above assumes that the School.csdl file is in the project's output directory and that you have added the following Imports and Using statements to your project:

 using System.Data.Metadata.Edm;

 

 

Elementos de anotação (CSDL)Annotation Elements (CSDL)

Os elementos Annotation na linguagem de definição de esquema conceitual (CSDL) são elementos XML personalizados no modelo conceitual.Annotation elements in conceptual schema definition language (CSDL) are custom XML elements in the conceptual model. Além de ter uma estrutura XML válida, o seguinte deve ser verdadeiro para elementos de anotação:In addition to having valid XML structure, the following must be true of annotation elements:

  • Os elementos de anotação não devem estar em nenhum namespace XML reservado para CSDL.Annotation elements must not be in any XML namespace that is reserved for CSDL.
  • Mais de um elemento Annotation pode ser um filho de um determinado elemento CSDL.More than one annotation element may be a child of a given CSDL element.
  • Os nomes totalmente qualificados de quaisquer dois elementos de anotação não devem ser iguais.The fully-qualified names of any two annotation elements must not be the same.
  • Os elementos de anotação devem aparecer após todos os outros elementos filho de um determinado elemento CSDL.Annotation elements must appear after all other child elements of a given CSDL element.

Os elementos de anotação podem ser usados para fornecer metadados extras sobre os elementos em um modelo conceitual.Annotation elements can be used to provide extra metadata about the elements in a conceptual model. A partir do .NET Framework versão 4, os metadados contidos nos elementos de anotação podem ser acessados em tempo de execução usando classes no namespace System. Data. Metadata. Edm.Starting with the .NET Framework version 4, metadata contained in annotation elements can be accessed at runtime by using classes in the System.Data.Metadata.Edm namespace.

ExemploExample

O exemplo a seguir mostra um elemento EntityType com um elemento Annotation (customelement).The following example shows an EntityType element with an annotation element (CustomElement). O exemplo também mostra um atributo Annotation aplicado ao elemento tipo de entidade.The example also show an annotation attribute applied to the entity type element.

 <Schema Namespace="SchoolModel" Alias="Self"
         xmlns:annotation="https://schemas.microsoft.com/ado/2009/02/edm/annotation"
         xmlns="https://schemas.microsoft.com/ado/2009/11/edm">
   <EntityContainer Name="SchoolEntities" annotation:LazyLoadingEnabled="true">
     <EntitySet Name="People" EntityType="SchoolModel.Person" />
   </EntityContainer>
   <EntityType Name="Person" xmlns:p="http://CustomNamespace.com"
               p:CustomAttribute="Data here.">
     <Key>
       <PropertyRef Name="PersonID" />
     </Key>
     <Property Name="PersonID" Type="Int32" Nullable="false"
               annotation:StoreGeneratedPattern="Identity" />
     <Property Name="LastName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="FirstName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="HireDate" Type="DateTime" />
     <Property Name="EnrollmentDate" Type="DateTime" />
     <p:CustomElement>
       Custom metadata.
     </p:CustomElement>
   </EntityType>
 </Schema>

 

O código a seguir recupera os metadados no elemento Annotation e grava-os no console:The following code retrieves the metadata in the annotation element and writes it to the console:

 EdmItemCollection collection = new EdmItemCollection("School.csdl");
 MetadataWorkspace workspace = new MetadataWorkspace();
 workspace.RegisterItemCollection(collection);
 EdmType contentType;
 workspace.TryGetType("Person", "SchoolModel", DataSpace.CSpace, out contentType);
 if (contentType.MetadataProperties.Contains("http://CustomNamespace.com:CustomElement"))
 {
     MetadataProperty annotationProperty =
         contentType.MetadataProperties["http://CustomNamespace.com:CustomElement"];
     object annotationValue = annotationProperty.Value;
     Console.WriteLine(annotationValue.ToString());
 }

 

O código acima pressupõe que o arquivo School. CSDL está no diretório de saída do projeto e que você adicionou as Imports instruções e a seguir Using ao seu projeto:The code above assumes that the School.csdl file is in the project's output directory and that you have added the following Imports and Using statements to your project:

 using System.Data.Metadata.Edm;

 

 

CSDL (tipos de modelo conceitual)Conceptual Model Types (CSDL)

O CSDL (linguagem de definição de esquema conceitual) dá suporte a um conjunto de tipos de dados primitivos abstratos, chamados EDMSimpleTypes, que definem propriedades em um modelo conceitual.Conceptual schema definition language (CSDL) supports a set of abstract primitive data types, called EDMSimpleTypes, that define properties in a conceptual model. EDMSimpleTypes são proxies para tipos de dados primitivos que têm suporte no ambiente de armazenamento ou de hospedagem.EDMSimpleTypes are proxies for primitive data types that are supported in the storage or hosting environment.

A tabela a seguir lista os tipos de dados primitivos que são suportados pelo CSDL.The table below lists the primitive data types that are supported by CSDL. A tabela também lista as facetas que podem ser aplicadas a cada EDMSimpleType.The table also lists the facets that can be applied to each EDMSimpleType.

EDMSimpleTypeEDMSimpleType DescriptionDescription Facetas aplicáveisApplicable Facets
Edm.BinaryEdm.Binary Contém dados binários.Contains binary data. MaxLength, FixedLength, anulável, opçãoMaxLength, FixedLength, Nullable, Default
Edm.BooleanEdm.Boolean Contém o valor true ou false.Contains the value true or false. Anulável, opçãoNullable, Default
Edm.ByteEdm.Byte Contém um valor inteiro de 8 bits sem sinal.Contains an unsigned 8-bit integer value. Precisão, anulável, opçãoPrecision, Nullable, Default
Edm.DateTimeEdm.DateTime Representa uma data e hora.Represents a date and time. Precisão, anulável, opçãoPrecision, Nullable, Default
Edm.DateTimeOffsetEdm.DateTimeOffset Contém uma data e hora como um deslocamento em minutos GMT.Contains a date and time as an offset in minutes from GMT. Precisão, anulável, opçãoPrecision, Nullable, Default
Edm.DecimalEdm.Decimal Contém um valor numérico com precisão e escala fixa.Contains a numeric value with fixed precision and scale. Precisão, anulável, opçãoPrecision, Nullable, Default
Edm.DoubleEdm.Double Contém um número de ponto flutuante com precisão de 15 dígitosContains a floating point number with 15-digit precision Precisão, anulável, opçãoPrecision, Nullable, Default
EDM. floatEdm.Float Contém um número de ponto flutuante com precisão de 7 dígitos.Contains a floating point number with 7-digit precision. Precisão, anulável, opçãoPrecision, Nullable, Default
Edm.GuidEdm.Guid Contém um identificador exclusivo de 16 bytes.Contains a 16-byte unique identifier. Precisão, anulável, opçãoPrecision, Nullable, Default
Edm.Int16Edm.Int16 Contém um valor inteiro de 16 bits assinado.Contains a signed 16-bit integer value. Precisão, anulável, opçãoPrecision, Nullable, Default
Edm.Int32Edm.Int32 Contém um valor inteiro de 32 bits assinado.Contains a signed 32-bit integer value. Precisão, anulável, opçãoPrecision, Nullable, Default
Edm.Int64Edm.Int64 Contém um valor inteiro de 64 bits assinado.Contains a signed 64-bit integer value. Precisão, anulável, opçãoPrecision, Nullable, Default
Edm.SByteEdm.SByte Contém um valor inteiro de 8 bits com sinal.Contains a signed 8-bit integer value. Precisão, anulável, opçãoPrecision, Nullable, Default
Edm.StringEdm.String Contém dados de caractere.Contains character data. Unicode, FixedLength, MaxLength, ordenação, precisão, anulável, opçãoUnicode, FixedLength, MaxLength, Collation, Precision, Nullable, Default
Edm.TimeEdm.Time Contém uma hora.Contains a time of day. Precisão, anulável, opçãoPrecision, Nullable, Default
EDM. geographyEdm.Geography Permite valor nulo, padrão, SRIDNullable, Default, SRID
Edm.GeographyPointEdm.GeographyPoint Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. GeographyLineStringEdm.GeographyLineString Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. geographyPolygon queEdm.GeographyPolygon Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. geographyMultiPoint queEdm.GeographyMultiPoint Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. GeographyMultiLineStringEdm.GeographyMultiLineString Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. geographyMultiPolygon queEdm.GeographyMultiPolygon Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. geographcollectionEdm.GeographyCollection Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. GeometryEdm.Geometry Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. geometryPoint queEdm.GeometryPoint Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. geometryLineString queEdm.GeometryLineString Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. geometryPolygon queEdm.GeometryPolygon Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. geometryMultiPoint queEdm.GeometryMultiPoint Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. GeometryMultiLineStringEdm.GeometryMultiLineString Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. geometryMultiPolygon queEdm.GeometryMultiPolygon Permite valor nulo, padrão, SRIDNullable, Default, SRID
EDM. GeometryCollectionEdm.GeometryCollection Permite valor nulo, padrão, SRIDNullable, Default, SRID

Facetas (CSDL)Facets (CSDL)

Facetas em CSDL (linguagem de definição de esquema conceitual) representam restrições em Propriedades de tipos de entidade e tipos complexos.Facets in conceptual schema definition language (CSDL) represent constraints on properties of entity types and complex types. As facetas aparecem como atributos XML nos seguintes elementos CSDL:Facets appear as XML attributes on the following CSDL elements:

  • PropriedadeProperty
  • TypeRefTypeRef
  • ParâmetroParameter

A tabela a seguir descreve as facetas com suporte em CSDL.The following table describes the facets that are supported in CSDL. Todas as facetas são opcionais.All facets are optional. Algumas facetas listadas abaixo são usadas pelo Entity Framework ao gerar um banco de dados de um modelo conceitual.Some facets listed below are used by the Entity Framework when generating a database from a conceptual model.

Observação

Para obter informações sobre tipos de dados em um modelo conceitual, consulte tipos de modelo conceituais (CSDL).For information about data types in a conceptual model, see Conceptual Model Types (CSDL).

FacetaFacet DescriptionDescription Aplica-se aApplies to Usado para a geração de banco de dadosUsed for the database generation Usado pelo tempo de execuçãoUsed by the runtime
OrdenaçãoCollation Especifica a sequência de agrupamento (ou sequência de classificação) a ser usadas para executar a comparação e em ordenação operações em valores de propriedade.Specifies the collating sequence (or sorting sequence) to be used when performing comparison and ordering operations on values of the property. Edm.StringEdm.String SimYes NãoNo
ConcurrencyModeConcurrencyMode Indica que o valor da propriedade deve ser usado para verificação de simultaneidade otimista.Indicates that the value of the property should be used for optimistic concurrency checks. Todas as propriedades EDMSimpleTypeAll EDMSimpleType properties NãoNo SimYes
DefaultDefault Especifica o valor de propriedade padrão se nenhum valor é fornecido em cima de instanciação.Specifies the default value of the property if no value is supplied upon instantiation. Todas as propriedades EDMSimpleTypeAll EDMSimpleType properties SimYes SimYes
CadeiaFixedLength Especifica se o comprimento do valor da propriedade pode variar.Specifies whether the length of the property value can vary. EDM. Binary, EDM. StringEdm.Binary, Edm.String SimYes NãoNo
MaxLengthMaxLength Especifica o comprimento máximo de valor de propriedade.Specifies the maximum length of the property value. EDM. Binary, EDM. StringEdm.Binary, Edm.String SimYes NãoNo
Permite valor nuloNullable Especifica se a propriedade pode ter um valor nulo .Specifies whether the property can have a null value. Todas as propriedades EDMSimpleTypeAll EDMSimpleType properties SimYes SimYes
PrecisãoPrecision Para propriedades do tipo decimal, especifica o número de dígitos que um valor de propriedade pode ter.For properties of type Decimal, specifies the number of digits a property value can have. Para propriedades do tipo time, DateTimee DateTimeOffset, especifica o número de dígitos para a parte fracionária de segundos do valor da propriedade.For properties of type Time, DateTime, and DateTimeOffset, specifies the number of digits for the fractional part of seconds of the property value. EDM. DateTime, EDM. DateTimeOffset, EDM. decimal, EDM. timeEdm.DateTime, Edm.DateTimeOffset, Edm.Decimal, Edm.Time SimYes NãoNo
DimensionarScale Especifica o número de dígitos à direita do ponto decimal para o valor da propriedade.Specifies the number of digits to the right of the decimal point for the property value. Edm.DecimalEdm.Decimal SimYes NãoNo
SRIDSRID Especifica a ID do sistema de referência espacial do sistema.Specifies the Spatial System Reference System ID. Para obter mais informações, consulte SRID e SRID (SQL Server).For more information, see SRID and SRID (SQL Server). EDM. geography, EDM. GeographyPoint, EDM. GeographyLineString, EDM. geographyPolygon que, EDM. geographyMultiPoint que, EDM. GeographyMultiLineString, EDM. geographyMultiPolygon que, EDM. geographcollection, EDM. Geometry, EDM. geometryPoint que, EDM. geometryLineString que, EDM. geometryPolygon que, EDM. geometryMultiPoint que, EDM. GeometryMultiLineString, EDM. geometryMultiPolygon que, EDM. GeometryCollectionEdm.Geography, Edm.GeographyPoint, Edm.GeographyLineString, Edm.GeographyPolygon, Edm.GeographyMultiPoint, Edm.GeographyMultiLineString, Edm.GeographyMultiPolygon, Edm.GeographyCollection, Edm.Geometry, Edm.GeometryPoint, Edm.GeometryLineString, Edm.GeometryPolygon, Edm.GeometryMultiPoint, Edm.GeometryMultiLineString, Edm.GeometryMultiPolygon, Edm.GeometryCollection NãoNo SimYes
UnicodeUnicode Indica se o valor da propriedade é armazenado como Unicode.Indicates whether the property value is stored as Unicode. Edm.StringEdm.String SimYes SimYes

Observação

Ao gerar um banco de dados de um modelo conceitual, o assistente para gerar banco de dados reconhecerá o valor do atributo StoreGeneratedPattern em um elemento de Propriedade se ele estiver no namespace a seguir: https://schemas.microsoft.com/ado/2009/02/edm/annotation .When generating a database from a conceptual model, the Generate Database Wizard will recognize the value of the StoreGeneratedPattern attribute on a Property element if it is in the following namespace: https://schemas.microsoft.com/ado/2009/02/edm/annotation. Os valores com suporte para o atributo são identidade e computados.The supported values for the attribute are Identity and Computed. Um valor de Identity produzirá uma coluna de banco de dados com um valor de identidade que é gerado no banco de dados.A value of Identity will produce a database column with an identity value that is generated in the database. Um valor de computado produzirá uma coluna com um valor que é computado no banco de dados.A value of Computed will produce a column with a value that is computed in the database.

ExemploExample

O exemplo a seguir mostra as facetas aplicadas às propriedades de um tipo de entidade:The following example shows facets applied to the properties of an entity type:

 <EntityType Name="Product">
   <Key>
     <PropertyRef Name="ProductId" />
   </Key>
   <Property Type="Int32"
             Name="ProductId" Nullable="false"
             a:StoreGeneratedPattern="Identity"
    xmlns:a="https://schemas.microsoft.com/ado/2009/02/edm/annotation" />
   <Property Type="String"
             Name="ProductName"
             Nullable="false"
             MaxLength="50" />
   <Property Type="String"
             Name="Location"
             Nullable="true"
             MaxLength="25" />
 </EntityType>