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.
Associaçã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;
}
associaçã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