Criação de uma associação entre entidades
Você pode definir relações entre entidades no seu modelo de conectividade de dados de negócios (BDC) Criando associações. Visual Studio gera métodos de oferecem aos consumidores do modelo de informações sobre cada associação. Esses métodos podem ser consumidos por aplicativos personalizados para exibir os relacionamentos dos dados em uma interface de usuário (UI), listas ou de Web Parts do SharePoint.
Criação de uma associação
Criar uma associação, selecionando um associação em que o Visual Studio caixa de ferramentas, clicando na primeira entidade (chamada de entidade de origem) e a entidade de segunda (chamada de entidade de destino). Você pode definir os detalhes da associação no O Editor de associação. Para obter mais informações, consulte Como: Criar uma associação entre entidades.
Métodos de associação
Aplicativos como, por exemplo, de Web Parts de dados do SharePoint negócios consomem associações chamando métodos da classe de serviço de uma entidade. Você pode adicionar métodos à classe de serviço de uma entidade, selecionando-os na O Editor de associação.
Por padrão, o O Editor de associação adiciona um método de navegação de associação para as entidades de origem e destino. Um método de navegação de associação na entidade de origem permite que os consumidores recuperar uma lista de entidades de destino. Um método de navegação de associação da entidade de destino permite que os consumidores recuperar a entidade de origem está relacionado a uma entidade de destino.
Você deve adicionar o código para cada um desses métodos para retornar as informações apropriadas. Você também pode adicionar outros tipos de métodos para oferecer suporte a cenários mais avançados. Para obter mais informações sobre cada um desses métodos, consulte Suporte para operações.
Tipos de associações
Você pode criar dois tipos de associações no designer BDC: associações de baseada em chave estrangeiras e associações de sem chave estrangeiras.
Associação de baseada em chave estrangeira
Você pode criar uma associação de baseada em chave estrangeira, relacionando um identificador da entidade de origem digitar descritores definidos na entidade de destino. Este relacionamento permite que os consumidores do modelo fornecer uma interface do usuário avançada para seus usuários. Por exemplo, um formulário do Outlook que permite ao usuário criar uma ordem de venda pode exibir a clientes em uma lista suspensa; ou uma lista de ordens de venda no SharePoint que permite aos usuários abrir uma página de perfil para um cliente.
Para criar uma associação de baseada em chave estrangeira, relacionar os identificadores e digite descritores que compartilham o mesmo nome e tipo. Por exemplo, você pode criar uma associação baseada em chave estrangeira entre um Contact entidade e um SalesOrder de entidade. O SalesOrder entidade retorna um ContactID Digite descritor como parte do parâmetro de retorno de métodos Finder ou o Finder específico. Ambos os descritores de tipo aparecem no O Editor de associação. Para criar uma relação baseada em chave estrangeira entre a Contact entidade e SalesOrder entidade, selecione o ContactID identificador próximo a cada um desses campos.
Adicione código para o método de associação Navigator da entidade de origem que retorna uma coleção de entidades de destino. O exemplo a seguir retorna as ordens 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 para o método de associação Navigator da entidade de destino que retorna uma entidade de origem. O exemplo a seguir retorna o contato que está relacionado à 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 de sem chave estrangeira
Você pode criar uma associação sem o mapeamento de identificadores para os descritores de tipo de campo. Crie esse tipo de associação, quando a entidade de origem não tem relação direta com a entidade de destino. Por exemplo, um SalesOrderDetail tabela não tem uma chave externa que mapeia para uma chave primária em um Contact tabela.
Se você deseja exibir informações no SalesOrderDetail tabela está relacionado a uma Contact, você pode criar uma associação sem chave estrangeira entre a Contact entidade e SalesOrderDetail entidade.
No método de navegação de associação a Contact entidade, o retorno de SalesOrderDetail entidades, associação de tabelas, ou chamando o procedimento armazenado.
O exemplo a seguir retorna os detalhes de todas as ordens de venda por associação de 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;
}
No método de navegação de associação de SalesOrderDetail entidade, retornar a relacionados Contact. 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;
}