Compartilhar via


Criação de uma associação entre entidades

Você pode definir relacionamentos entre entidades no seu modelo de (BDC) de conectividade de dados comerciais criando associações.O Visual Studio gera os métodos que fornecem os consumidores do modelo com informações sobre cada associação.Esses métodos podem ser consumidos pelo SharePoint Web parts, listas, ou aplicativos personalizados exibir relações de dados em uma interface de usuário (UI).

criando uma associação

Criar uma associação escolhendo o controle de Associação no Visual Studio Caixa de Ferramentas, escolhendo a primeira (entidade chamada ao objeto de origem) e em seguida, escolhendo a segunda (entidade chamada a entidade de destino).Você pode definir os detalhes de associação em Editor de Associação.Para obter mais informações, consulte Como: criar uma associação entre entidades.

Métodos de associação

Aplicativos como as partes da Web do SharePoint consomem dados comerciais de associações chamando métodos na classe de serviço de uma entidade.Você pode adicionar métodos à classe de serviço de uma entidade selecionar os Editor de Associaçãoem.

Por padrão, Editor de Associação adiciona um método de navegação de associação a entidades de origem e destino.Um método de navegação de associação no entidade de origem ele permite que os clientes para recuperar uma lista das entidades de destino.Um método de navegação de associação no entidade de destino ele permite que os clientes para recuperar o objeto de origem que está relacionado a um entidade de destino.

Você deve adicionar o código para cada um de esses métodos para retornar as informações apropriadas.Você também pode adicionar outros tipos de métodos para suportar cenários mais avançados.Para obter mais informações sobre cada um de esses métodos, consulte operações suportados.

tipos de associações

Você pode criar dois tipos de associações no designer de BDC: associações chave com base de associações e keyless estrangeiras.

Ee348596.collapse_all(pt-br,VS.110).gifAssociação Com chave estrangeira

Você pode criar uma associação chave estrangeira com base em tabelas com um identificador objeto de origem para digitar descritores definidos no entidade de destino.Esse relacionamento permite que os consumidores de modelo para fornecer uma interface do usuário aprimorado para seus usuários.Por exemplo, um formulário no Outlook que permite que um usuário para criar uma ordem de venda que pode exibir clientes em uma lista suspensa; ou uma lista de pedidos de venda no SharePoint que permite aos usuários para abrir uma página de perfil de um cliente.

Para criar uma associação com chave estrangeira, tenha os identificadores e descritores de tipo que compartilham o mesmo nome e tipo.Por exemplo, você pode criar uma associação com chave estrangeira entre uma entidade de Contact e uma entidade de SalesOrder .A entidade de SalesOrder retorna um descritor do tipo de ContactID como parte do parâmetro de retorno de localizador ou métodos específicos de localizador.Ambos descritores de tipo aparecem em Editor de Associação.Para criar uma relação com chave estrangeira entre a entidade de Contact e a entidade de SalesOrder , escolha o identificador de ContactID próximo a cada um de esses campos.

Adicione código ao método do navegador de associação de objeto de origem que retorna uma coleção de entidades de destino.O exemplo a seguir retorna os pedidos de venda para um contato.

Public Shared Function ContactToSalesOrder(ByVal contactID As Integer) As IEnumerable(Of SalesOrderHeader)
    Const ServerName As String = "MySQLServerName"
    Dim dataContext As AdventureWorksDataContext = _
        New AdventureWorksDataContext("Data Source=" & ServerName & _
            ";Initial Catalog=AdventureWorks;Integrated Security=True")

    Dim orderList As IEnumerable(Of SalesOrderHeader) = _
        From orders In dataContext.SalesOrderHeaders _
        Where orders.ContactID = contactID _
              Select orders
    Return orderList

End Function
public static IEnumerable<SalesOrderHeader> ContactToSalesOrder(int contactID)
{
    const string ServerName = "MySQLServerName";
    AdventureWorksDataContext dataContext = new AdventureWorksDataContext
          ("Data Source=" + ServerName + ";" +
           "Initial Catalog=AdventureWorks;Integrated Security=True");

    IEnumerable<SalesOrderHeader> orderList = 
        from orders in dataContext.SalesOrderHeaders
             where orders.ContactID == contactID
             select orders;
    return orderList;
}

Adicione código ao método do navegador de associação entidade de destino que retorna uma entidade de origem.O exemplo a seguir retorna o contatos que está relacionado a ordem de venda.

Public Shared Function SalesOrderToContact(ByVal salesOrderID As Integer) As IEnumerable(Of Contact)

    Const ServerName As String = "MySQLServerName"
    Dim dataContext As AdventureWorksDataContext = _
        New AdventureWorksDataContext("Data Source=" & ServerName & _
            ";Initial Catalog=AdventureWorks;Integrated Security=True")

    Dim TempContactID As Integer = _
        (From orders In dataContext.SalesOrderHeaders _
        Where orders.SalesOrderID = salesOrderID _
        Select orders.ContactID).[Single]()

    Dim contactList As IEnumerable(Of Contact) = _
        From contacts In dataContext.Contacts _
        Where contacts.ContactID = TempContactID _
        Select contacts
    Return contactList

End Function
public static IEnumerable<Contact> SalesOrderToContact(int salesOrderID)
{
    const string ServerName = "MySQLServerName";
    AdventureWorksDataContext dataContext = new AdventureWorksDataContext
          ("Data Source=" + ServerName + ";" +
           "Initial Catalog=AdventureWorks;Integrated Security=True");

    int TempContactID = (from orders in dataContext.SalesOrderHeaders
                     where orders.SalesOrderID == salesOrderID
                     select orders.ContactID).Single();

    IEnumerable<Contact> contactList = from contacts in dataContext.Contacts
                                     where contacts.ContactID == TempContactID
                                     select contacts;
    return contactList;

}

Ee348596.collapse_all(pt-br,VS.110).gifassociação Keyless estrangeira

Você pode criar uma associação sem identificadores para mapear descritores do tipo de campo.Criar este tipo de associação quando o objeto de origem não tem um relacionamento direta com a entidade de destino.Por exemplo, uma tabela de SalesOrderDetail não tem uma chave externa que mapeia a uma chave primária em uma tabela de Contact .

Se você deseja exibir informações na tabela de SalesOrderDetail que relaciona com a Contact, você pode criar uma associação keyless estrangeira entre a entidade de Contact e a entidade de SalesOrderDetail .

Em o método de navegação de associação de entidade de Contact , retornar as entidades de SalesOrderDetail juntando-se tabelas, ou chamando um procedimento armazenado.

O exemplo a seguir retorna detalhes de todos os pedidos de venda juntando-se tabelas.

Public Shared Function ContactToSalesOrderDetail(ByVal contactID As Integer) As IEnumerable(Of SalesOrderDetail)
    Const ServerName As String = "MySQLServerName"
    Dim dataContext As AdventureWorksDataContext = _
        New AdventureWorksDataContext("Data Source=" & ServerName & _
            ";Initial Catalog=AdventureWorks;Integrated Security=True")

    Dim orderList As IEnumerable(Of SalesOrderDetail) = _
        From orders In dataContext.SalesOrderHeaders _
        Join orderDetails In dataContext.SalesOrderDetails On _
            orders.SalesOrderID Equals orderDetails.SalesOrderID _
        Where orders.ContactID = contactID _
        Select orderDetails
    Return orderList

End Function
public static IEnumerable<SalesOrderDetail> ContactToSalesOrderDetail(int contactID)
{
    const string ServerName = "MySQLServerName";
    AdventureWorksDataContext dataContext = new AdventureWorksDataContext
          ("Data Source=" + ServerName + ";" +
           "Initial Catalog=AdventureWorks;Integrated Security=True");

    IEnumerable<SalesOrderDetail> orderList =
        from orders in dataContext.SalesOrderHeaders
        join orderDetails in dataContext.SalesOrderDetails on
            orders.SalesOrderID equals orderDetails.SalesOrderID
        where orders.ContactID == contactID
        select orderDetails;
    return orderList;
}

Em o método de navegação de associação de entidade de SalesOrderDetail , retornar Contactrelacionados.O exemplo a seguir demonstra isso.

Public Shared Function SalesOrderDetailToContact(ByVal salesOrderID As Integer, ByVal salesOrderDetailID As Integer) As IEnumerable(Of Contact)
    Const ServerName As String = "MySQLServerName"
    Dim dataContext As AdventureWorksDataContext = _
        New AdventureWorksDataContext("Data Source=" & ServerName & _
            ";Initial Catalog=AdventureWorks;Integrated Security=True")

    Dim TempContactID As Integer = _
        (From orders In dataContext.SalesOrderHeaders _
        Where orders.SalesOrderID = salesOrderID _
        Select orders.ContactID).[Single]()

    Dim contactList As IEnumerable(Of Contact) = _
        From contacts In dataContext.Contacts _
        Where contacts.ContactID = TempContactID _
        Select contacts
    Return contactList

End Function
public static IEnumerable<Contact> SalesOrderDetailToContact(int salesOrderID, int salesOrderDetailID)
{
    const string ServerName = "MySQLServerName";
    AdventureWorksDataContext dataContext = new AdventureWorksDataContext
          ("Data Source=" + ServerName + ";" +
           "Initial Catalog=AdventureWorks;Integrated Security=True");

    int TempContactID = (from orders in dataContext.SalesOrderHeaders
                         where orders.SalesOrderID == salesOrderID
                         select orders.ContactID).Single();

    IEnumerable<Contact> contactList = from contacts in dataContext.Contacts
                                       where contacts.ContactID == TempContactID
                                       select contacts;
    return contactList;
}

Consulte também

Tarefas

Como: criar uma associação entre entidades

Outros recursos

Elaborar um modelo de conectividade de dados de negócios